Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Приоритет группировки  [new]
Teoretic
Member

Откуда:
Сообщений: 29
Народ, всем привет!

Кто в теме, подскажите плиз:

select ID, min(Number) as Num, max(CRM) as CRM from Table group by ID

В таком запросе как определить, чтоб сначала группировал по min а затем в полученом наборе группировал по max?

Топорно накрутить селект - это можно, но думаю может есть более изящный вариант...

Заранее спасибо!
7 июн 16, 12:38    [19266610]     Ответить | Цитировать Сообщить модератору
 Re: Приоритет группировки  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
этот запрос такого не делает
7 июн 16, 12:40    [19266616]     Ответить | Цитировать Сообщить модератору
 Re: Приоритет группировки  [new]
o-o
Guest
группировка тут одна и единственная -- по ID.
как и что можно группировать по посчитанному агрегату?
сам агрегат что ли?
7 июн 16, 12:44    [19266637]     Ответить | Цитировать Сообщить модератору
 Re: Приоритет группировки  [new]
Добрый Э - Эх
Guest
Teoretic,

тебе, однако, нужен top 1 with ties ... order by row_number() over(partitoin by id order by Number, CRM desc)
7 июн 16, 12:45    [19266643]     Ответить | Цитировать Сообщить модератору
 Re: Приоритет группировки  [new]
Teoretic
Member

Откуда:
Сообщений: 29
o-o
группировка тут одна и единственная -- по ID.
как и что можно группировать по посчитанному агрегату?
сам агрегат что ли?


Ну группирует то по ID, но два раза и по выборке получается так,
что сначала группирует по максимальным CRM, получившийся
результат группирует по минимальным Number.... я вот подумал может какой Hint есть, чтоб указать приоритет
7 июн 16, 12:51    [19266688]     Ответить | Цитировать Сообщить модератору
 Re: Приоритет группировки  [new]
Teoretic
Member

Откуда:
Сообщений: 29
Добрый Э - Эх
Teoretic,

тебе, однако, нужен top 1 with ties ... order by row_number() over(partitoin by id order by Number, CRM desc)


Возможно, ща попробую....Спасибо!
7 июн 16, 12:53    [19266705]     Ответить | Цитировать Сообщить модератору
 Re: Приоритет группировки  [new]
Teoretic
Member

Откуда:
Сообщений: 29
Добрый Э - Эх
Teoretic,

тебе, однако, нужен top 1 with ties ... order by row_number() over(partitoin by id order by Number, CRM desc)


Проверил - то, что надо! Отпад тема - огроменное спасибо!)
7 июн 16, 13:12    [19266799]     Ответить | Цитировать Сообщить модератору
 Re: Приоритет группировки  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Teoretic,

есть подозрение, что агрегат на производную таблицу будет значительно производительней, чем это набор окон
7 июн 16, 13:18    [19266834]     Ответить | Цитировать Сообщить модератору
 Re: Приоритет группировки  [new]
Teoretic
Member

Откуда:
Сообщений: 29
TaPaK
Teoretic,

есть подозрение, что агрегат на производную таблицу будет значительно производительней, чем это набор окон



"набор окон" - ты имеешь ввиду - " top 1 with ties ... order by row_number() over(partitoin by id order by Number, CRM desc)"?
Если да, то ты прав 26 секунд против 19 секунд у min max с выводом 200 тыс строк ....в моей задаче не критично

Хотя, если честно все-равно интересно, есть ли возможность принудительно указать чтоб сначала выполнял группировал по min, а затем по max
7 июн 16, 13:27    [19266876]     Ответить | Цитировать Сообщить модератору
 Re: Приоритет группировки  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Teoretic,

Хотя, если честно все-равно интересно, есть ли возможность принудительно указать чтоб сначала выполнял группировал по min, а затем по max

вы спрашиваете ересь
7 июн 16, 13:33    [19266910]     Ответить | Цитировать Сообщить модератору
 Re: Приоритет группировки  [new]
Teoretic
Member

Откуда:
Сообщений: 29
TaPaK,

Да и не принципиально уже это заюзал
" top 1 with ties ... order by row_number() over(partitoin by id order by Number, CRM desc)" - Еще раз спасибо "Добрый Э - Эх"!)
7 июн 16, 13:38    [19266941]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить