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

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

что-то не осиливаю как такое сделать просто одним-двумя селектами:

Users - ID, Name, ...
Game - UserId, Date, Score, Time...

Один юзер может играть много раз. Надо выбрать top 10 победителей.
Юзеры конечно должен быть разные, а в Game результаты одного могут быть рядом.

Вот...
4 июн 12, 10:28    [12660117]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать топ ХХ победителей  [new]
Добрый Э - Эх
Guest
gropu by + top 10 ?
4 июн 12, 10:34    [12660155]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать топ ХХ победителей  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
with cte as
(
 select
  UserId, Date, Score, Time...,
  row_number() over (partition by UserId order by score desc) as n 
 from
  Games
)
select top (10)
 UserId, Date, Score, Time...
from
 cte
where
 n = 1
order by
 Score desc;
4 июн 12, 10:38    [12660179]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать топ ХХ победителей  [new]
SlavaVV
Member

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

Нет не все так просто :)
4 июн 12, 12:58    [12661151]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать топ ХХ победителей  [new]
SlavaVV
Member

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

row_number() over (partition by UserId order by score desc) as n

хмм, попробую, спасибо
4 июн 12, 12:59    [12661168]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать топ ХХ победителей  [new]
SlavaVV
Member

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

Да, отлично, сольшое спасибо.
Не знал про вариант с partition by
4 июн 12, 13:46    [12661520]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить