Показать результаты запроса с наибольшим совокупным значением - PullRequest
1 голос
/ 31 января 2012

Я пытаюсь создать запрос, который отображает строки с самыми высокими значениями в совокупном столбце «NumberOfArticles». Однако, поскольку существует несколько строк с одинаковым самым высоким значением, я не уверен, как правильно ограничить количество строк, сгенерированных запросом.

SELECT WRT_ID, COUNT(ART_ID) AS NumberOfArticles
FROM Articles
GROUP BY WRT_ID
ORDER BY NumberOfArticles DESC

Ответы [ 4 ]

1 голос
/ 31 января 2012
SELECT TOP 1 WRT_ID, COUNT(ART_ID) AS NumberOfArticles
FROM Articles
GROUP BY WRT_ID
ORDER BY 2 DESC

Если есть несколько строк с наибольшим количеством NumberOfArticles, связи будут включены.Если вы не хотите, чтобы были включены связи, а только одна из них с наибольшим количеством NumberOfArticles, поместите GROUP BY в подзапрос и при необходимости измените ORDER BY.

SELECT TOP 1 sub.WRT_ID, sub.NumberOfArticles
FROM (
    SELECT WRT_ID, COUNT(ART_ID) AS NumberOfArticles
    FROM Articles
    GROUP BY WRT_ID
    ) AS sub
ORDER BY 2 DESC, 1 DESC;
1 голос
/ 31 января 2012

Я думаю, этого может быть достаточно для вас

SELECT WRT_ID, max(ART_ID) AS NumberOfArticles
FROM Articles
GROUP BY NumberOfArticles
ORDER BY NumberOfArticles DESC
0 голосов
/ 31 января 2012
SELECT WRT_ID, COUNT(ART_ID) AS NumberOfArticles
FROM Articles
GROUP BY WRT_ID
HAVING COUNT(ART_ID)=(SELECT MAX(t.c) FROM ( SELECT WRT_ID,COUNT(ART_ID) AS c 
                                             FROM Articles GROUP BY WRT_ID ) t )
ORDER BY NumberOfArticles DESC

Это дает вам все максимальные строки.

0 голосов
/ 31 января 2012

Я думаю, что вы, возможно, захотите:

SELECT A.WRT_ID, (SELECT MAX(B.ART_ID) FROM Articles As B WHERE B.WRT_ID = A.WRT_ID) As NumberOfArticles
FROM Articles A
ORDER BY 2 Desc

Это использует дополнительный выбор, чтобы получить самый высокий Art_Id для каждого Wrt_Id

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

SELECT A.WRT_ID, (SELECT COUNT(B.ART_ID) FROM Articles As B WHERE B.WRT_ID = A.WRT_ID) As NumberOfArticles
FROM Articles A
ORDER BY 2 Desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...