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

Откуда:
Сообщений: 127
Добрый!
Под вечер пятницы мозги отказали полностью - поэтому спрашиваю вопрос:
Имеется табличка типа: (пример, различия в днях)
| DateTime | ID |
_______________________
| 21/12/2013 | 1 |
| 21/12/2013 | 2 |
| 21/12/2013 | 3 |
| 21/12/2013 | 4 |
| 21/12/2013 | 5 |
| 21/12/2013 | 6 |
| 21/12/2013 | 7 |
| 21/12/2013 | 8 |
| 21/12/2013 | 9 |
| 21/12/2013 | 10 |
| 21/12/2013 | 11 |
| 22/12/2013 | 1 |
| 22/12/2013 | 2 |
| 22/12/2013 | 3 |
| 22/12/2013 | 4 |
| 22/12/2013 | 5 |
| 22/12/2013 | 6 |
| 22/12/2013 | 7 |
| 22/12/2013 | 8 |
| 22/12/2013 | 9 |
| 22/12/2013 | 10 |
| 22/12/2013 | 11 |

Необходимо для каждой даты вытащить TOP 3.
Просто написать TOP 5 и Select - не пашет - выведет просто список из 5 строк.
А в моем случае должен следующее:
| DateTime | ID |
_______________________
| 21/12/2013 | 1 |
| 21/12/2013 | 2 |
| 21/12/2013 | 3 |
| 22/12/2013 | 1 |
| 22/12/2013 | 2 |
| 22/12/2013 | 3 |

Блин я уже упарился мозг ломать, ведь знаю что просто очень.
25 июл 14, 18:10    [16359206]     Ответить | Цитировать Сообщить модератору
 Re: For each group select top 10  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
row_number() over ( partition by ... order by ... )
25 июл 14, 18:12    [16359209]     Ответить | Цитировать Сообщить модератору
 Re: For each group select top 10  [new]
НиколайСН
Member

Откуда:
Сообщений: 127
извини, а можно простенький запрос накидать на моем примере, а то я еще больше мозги сломал.
и у меня ms sql стоит...
25 июл 14, 18:15    [16359215]     Ответить | Цитировать Сообщить модератору
 Re: For each group select top 10  [new]
o-o
Guest
исходные данные оформите в виде заполнения @t table,
сразу найдутся желающие запрос написать
25 июл 14, 18:34    [16359255]     Ответить | Цитировать Сообщить модератору
 Re: For each group select top 10  [new]
gandjustas
Member

Откуда:
Сообщений: 857
Блог
НиколайСН,

seelct Id, DateTime 
from (select Id, DateTime, row_number() over ( partition by DateTime order by Id ) as ord from t)  t
where ord < 3
order by ord 
25 июл 14, 18:42    [16359275]     Ответить | Цитировать Сообщить модератору
 Re: For each group select top 10  [new]
НиколайСН
Member

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

Спасибо большое!
25 июл 14, 18:49    [16359291]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить