Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=10115136&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 13:40:19 2016
Кодировка: Windows-1251
[sql] выбрать в каждой группе минимальный - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
Basilio
GreenOne

Рег.: 14.10.2002
Сообщений: 13750
Из: Москва
Рейтинг: 3476
  [sql] выбрать в каждой группе минимальный
      01.04.2011 12:55
1

есть таблица (a,b,c)
нужно сгруппировать по a, упорядочить по b и взять первый c.
типа такого:
code:
a b c 1 0.4 a 1 0.2 b 1 0.7 c 1 0.3 d 2 0.3 e 2 0.2 f 2 0.1 g 2 0.4 h 3 0.8 i 3 0.9 j 3 0.3 k 3 0.7 l 4 0.9 m 4 0.8 n 4 0.3 o 4 0.1 p

результат:
code:
a c 1 b 2 g 3 k 4 p

другими словами:
сгруппировать по a, в каждой группе выбрать минимальный b и выдать соответствующий ему c.
то же с максимальным b





Вам устное замечание. Неинформативный заголовок.



Редактировал DarkGray (03.04.2011 04:34)
blykynqp
sir

Рег.: 13.11.2004
Сообщений: 1042
Рейтинг: 724
  Re: и мне посдкажите про SQL [re: Basilio]
      01.04.2011 13:08
1

бд то какая?

CROTishka
Shai-Hulud

Рег.: 09.06.2004
Сообщений: 31438
Из: - под земли
Рейтинг: 3654
  Re: и мне посдкажите про SQL [re: Basilio]
      01.04.2011 13:23
 

тебе сюда: http://www.rsdn.ru/article/db/WindowFunctions.xml



CROTishka
Shai-Hulud

Рег.: 09.06.2004
Сообщений: 31438
Из: - под земли
Рейтинг: 3654
  Re: и мне посдкажите про SQL [re: Basilio]
      01.04.2011 13:31
 

в твоем случае это будет что-то вроде
code:
SELECT a, c FROM (SELECT ROW_NUMBER () OVER (PARTITION BY a ORDER BY b) AS r, a, c FROM tabl) tt WHERE r = 1

в HAVING вроде нельзя окна использовать



Lynn
'Кофеман'

Рег.: 28.02.2003
Сообщений: 7316
Из: Тропарево-Никулино
Рейтинг: 905
  Re: и мне посдкажите про SQL [re: Basilio]
      01.04.2011 13:43
8

left join наше все :)
code:
sqlite> select q.a, q.c from x q left join x w on (q.a = w.a and q.b > w.b) where w.a is null; a c 1 b 2 g 3 k 4 p




Плыл в небе, глубоком как сон,
Кокаиновый пес
- Адриан и Александр
lomo
fynjy

Рег.: 05.04.2005
Сообщений: 8790
Из: Моск
Рейтинг: 989
  Re: и мне посдкажите про SQL [re: Basilio]
      01.04.2011 13:46
 

T-SQL
min(b)
code:
select a, (select c from #Temp e where a = t.a and b = t.b) from ( select c.a a, min(c.b) b from #temp c group by c.a) t


max(b)
code:
select a, (select c from #Temp e where a = t.a and b = t.b) from ( select c.a a, max(c.b) b from #temp c group by c.a) t

Правда я надеюсь у тебя пара столбцов а и б уникальна, иначе все будет некорректно работать.

CROTishka
Shai-Hulud

Рег.: 09.06.2004
Сообщений: 31438
Из: - под земли
Рейтинг: 3654
  Re: и мне посдкажите про SQL [re: lomo]
      01.04.2011 14:26
 

ну так неззя же! :)
только если PK по a, b составлен



lomo
fynjy

Рег.: 05.04.2005
Сообщений: 8790
Из: Моск
Рейтинг: 989
  Re: и мне посдкажите про SQL [re: CROTishka]
      01.04.2011 14:29
-1

че нельзя? не понял

CROTishka
Shai-Hulud

Рег.: 09.06.2004
Сообщений: 31438
Из: - под земли
Рейтинг: 3654
  Re: и мне посдкажите про SQL [re: lomo]
      01.04.2011 14:36
1

ну сейчас у тебя они допустим уникальны, через месяц если накидают значений других, и свалится твой запрос. :)



CROTishka
Shai-Hulud

Рег.: 09.06.2004
Сообщений: 31438
Из: - под земли
Рейтинг: 3654
  Re: и мне посдкажите про SQL [re: Lynn]
      01.04.2011 14:39
 

Сильно дорогой запрос имхо.



lomo
fynjy

Рег.: 05.04.2005
Сообщений: 8790
Из: Моск
Рейтинг: 989
  Re: и мне посдкажите про SQL [re: CROTishka]
      01.04.2011 14:41
-1

ну топикстатер не указал про уникальность, а я прдположил )
В таком случает можно чуть чуть изменить запрос, добавить min или max
code:
select a, (select min(c) from #Temp e where a = t.a and b = t.b) from ( select c.a a, min(c.b) b from #temp c group by c.a) t

либо так, где выведутся все минимальные значения.
code:
select t.a, p.c from ( select c.a a, min(c.b) b from #temp c group by c.a) t join #temp p on t.a= p.a and t.b = p.b


Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
1 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в