我有一张在学院使用课程/ PGM的学生表。我想在一个月内知道前100名PGM:
我在下面给出了这个MS SQL 2010代码...以找到前100个PGM /程序。我真的清理了我对嵌套SELECT,COUNT,COUNT DISTINCT,RANK等的黑客行为......相信我,我已经尝试过,从其他问题和答案中复制SQL。我希望不要制作一张临时桌子。我尝试的一切都是“没有快乐”。 :( 所以我想我会通过电子邮件发送给StackOverflow社区。任何帮助将不胜感激,并提前感谢您。
SELECT TOP 100
T.PGM AS 'Program'
,COUNT (*) AS 'Program Count'
FROM StudentPrograms T
WHERE
T.PGM <>'unknown'
AND T.CreateDate > '10/01/2015'
AND T.CreateDate < '10/31/2015'
GROUP BY
T.PGM
ORDER BY
COUNT(*) DESC
;
我最终应该在表中添加5列
答案 0 :(得分:0)
如果你想要排名,或许你想要rank()
:
SELECT TOP 100
T.PGM AS Program, COUNT(*) AS ProgramCount,
RANK() OVER (Order BY COUNT(*) DESC) as ranking
FROM StudentPrograms T
WHERE T.PGM <>'unknown' AND
T.CreateDate > '2015-10-01' AND
T.CreateDate < '2015-10-31' -- We don't like Halloween
GROUP BY T.PGM
ORDER BY COUNT(*) DESC;