Проблема с топ-10 строк в запросе SQL? - PullRequest
2 голосов
/ 11 июля 2011

Как новичок в Sql Server 2005, я должен получить некоторую помощь в получении 10 лучших из таблицы.

Сценарий похож на то, что таблица Invitecount имеет несколько записей для каждого идентификатора пользователя. У меня есть разные идентификаторы пользователей со следующим SQL-запросом

Select distinct(userid) from inviteCount 

Для каждого идентификатора пользователя я получаю количество баллов, используя следующий запрос

Select sum(points) from invitecount 
where UserID = 126429

И после того, как я получу сумму, у меня будет 10 лучших пользователей с максимальным количеством очков. Моя проблема здесь в том, чтобы написать все эти операторы вместе, используя массивы и т. Д.

ЕСЛИ кто-то может мне помочь, я действительно ценю это. Заранее спасибо!

Ответы [ 3 ]

5 голосов
/ 11 июля 2011

Попробуйте это:

SELECT TOP 10 userID, SUM(Points)
FROM inviteCount
GROUP BY UserId
ORDER BY SUM(Points) desc

Я не уверен, что вы имеете в виду, используя массивы, но это даст вам первые десять пользовательских идентификаторов, упорядоченных по сумме баллов.

3 голосов
/ 11 июля 2011

Попробуйте это:

Select TOP 10 userid, sum(points) from inviteCount group by userid order by sum(points) desc 
1 голос
/ 11 июля 2011

Вы хотите что-то вроде:

select top 10
    userid,
    pointstotal = sum(points)
from
    invitecount
group by userid
order by sum(points) desc

Обратите внимание на заказ.

Любимая версия будет

select 
    userid
    pointstotal = sum(points) over (partition by userid),
    row_number = row_number() over (partition by userid order by sum(points) desc)
from 
    invitecount i
where 
    row_number <= 10

(непроверено - так что, вероятно, нужно настроить)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...