RANK(),DENSE_RANK()和COUNT()在SQL Server

问题描述 投票:0回答:1

我有谁使用在学院开设的课程/铂族金属学生的表。我想知道,在一个给定的一个月,前100铂族金属:

  1. 多少次的程序/ PGM是(月)上运行,
  2. 铂族金属的排名,
  3. 一共有多少...唯一的SID ......学生证跑了PGM和
  4. 独特的学生数的排名

我得到这个MS SQL 2010下面的代码......找到前100铂族金属/节目。我真的清理我的黑客周围嵌套的SELECT中,COUNT,COUNT DISTINCT,RANK,等等......相信我,我已经尝试过,其他的问题及答案复制SQL。我希望不要有TP做一个临时表。一切我想是“不快乐” :(所以我想我会通过电子邮件发送的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列

  1. 程序
  2. 计划计数
  3. 节目排名(将1至100 ...无聊,我知道......不过没关系现在)
  4. 学生计数
  5. 学生排名(不会是直的1到100,但周围散落了一下)
sql count nested rank
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.