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

Откуда:
Сообщений: 4
Доброго дня всем!
Помогите пожалуйста с запросом, нужны только 10 max значений по полю страх.сумма по каждому виду.
(Отчетность горит, человек, который ее готовил, в отпуске)

вид страх.сумма фактич. премия Выплата
Р 46779168198 4976164.13 36056.19
Р 46779168198 4976164.13 36056.19
Р 46779168198 4976164.13 10296.99
Р 46779168198 4976164.13 689.31
Г 66446825733 804006.59 NULL
Г 74950293304 906898.55 NULL
14 ноя 12, 13:54    [13471834]     Ответить | Цитировать Сообщить модератору
 Re: 10 max значений  [new]
Добрый Э - Эх
Guest
axuser,

select top 10...
14 ноя 12, 13:56    [13471868]     Ответить | Цитировать Сообщить модератору
 Re: 10 max значений  [new]
axuser
Member

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

select top 10 страх.сумм., фактич. премия, Выплата, вид
from table1
group by вид ?
14 ноя 12, 14:04    [13471934]     Ответить | Цитировать Сообщить модератору
 Re: 10 max значений  [new]
axuser
Member

Откуда:
Сообщений: 4
нет, должно быть 10 max по каждому виду, а не просто 10 максимальных
14 ноя 12, 14:08    [13471996]     Ответить | Цитировать Сообщить модератору
 Re: 10 max значений  [new]
Добрый Э - Эх
Guest
тогда
select top 10 with ties
...
order by row_number() over(partition by ... order by ...)
14 ноя 12, 14:10    [13472006]     Ответить | Цитировать Сообщить модератору
 Re: 10 max значений  [new]
Добрый Э - Эх
Guest
Возможно, row_number() нужно заменить dense_rank()-ом
14 ноя 12, 14:11    [13472025]     Ответить | Цитировать Сообщить модератору
 Re: 10 max значений  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
axuser
нет, должно быть 10 max по каждому виду, а не просто 10 максимальных


select top 1 with ties * from MyTable
order by row_number() over (partition by [по каждому виду] order by [значение] desc)/11
14 ноя 12, 14:12    [13472037]     Ответить | Цитировать Сообщить модератору
 Re: 10 max значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
Ребята, вы чего?!
axuser
10 max значений по полю страх.сумма по каждому виду
WITH CTE AS(SELECT N=ROW_NUMBER()OVER(PARTITION BY вид ORDER BY [страх.сумма] DESC),* FROM T)
SELECT * FROM CTE WHERE N<=10;
или
SELECT TOP(1) WITH TIES *
FROM T
ORDER BY ROW_NUMBER()OVER(PARTITION BY вид ORDER BY [страх.сумма] DESC)/11;
Плюс ещё пара десятков решений - в поиск
14 ноя 12, 14:12    [13472042]     Ответить | Цитировать Сообщить модератору
 Re: 10 max значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
iap
Ребята, вы чего?!
axuser
10 max значений по полю страх.сумма по каждому виду
WITH CTE AS(SELECT N=ROW_NUMBER()OVER(PARTITION BY вид ORDER BY [страх.сумма] DESC),* FROM T)
SELECT * FROM CTE WHERE N<=10;
или
SELECT TOP(1) WITH TIES *
FROM T
ORDER BY ROW_NUMBER()OVER(PARTITION BY вид ORDER BY [страх.сумма] DESC)/11;
Плюс ещё пара десятков решений - в поиск
Извините, это я в 14:04 писал...
14 ноя 12, 14:13    [13472049]     Ответить | Цитировать Сообщить модератору
 Re: 10 max значений  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
Добрый Э - Эх
тогда
select top 10 with ties
...
order by row_number() over(partition by ... order by ...)
Ошибочка, однако!
TOP(10) не катит!
14 ноя 12, 14:13    [13472055]     Ответить | Цитировать Сообщить модератору
 Re: 10 max значений  [new]
BlackRaider
Member

Откуда: Москва (Волгоград)
Сообщений: 63
на базе вчерашнего топика про удаление записей:

create table ##t (code varchar(10), id int, idRec int)
insert into ##t values('111',1,1)
insert into ##t values('111',3,2)
insert into ##t values('111',2,3)
insert into ##t values('134',1,4)
insert into ##t values('134',2,5)
insert into ##t values('144',3,6)
insert into ##t values('134',3,7)
insert into ##t values('134',0,8)
insert into ##t values('144',32,9)
insert into ##t values('144',12,10)
insert into ##t values('144',2,11)
insert into ##t values('144',3,12)


;with tmp as (
  select code, id, row_number() over(partition by code order by code) [rn]
  from ##t
)

select * 
from tmp
where rn<3

drop table ##t
14 ноя 12, 14:14    [13472061]     Ответить | Цитировать Сообщить модератору
 Re: 10 max значений  [new]
axuser
Member

Откуда:
Сообщений: 4
Спасибо огромное, выручили!!!
в частности, jap ;)
14 ноя 12, 16:17    [13473413]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить