SubSelects 用于订单和计数

SubSelects for Order and Count

我有一个 select 这样的:

SELECT Faculty,Department,Season,Student,Score FROM Table

我想要两个像这样的新专栏:

Sample Result Set

NumberInSeason 是该学院、部门和季节的分数顺序。

TotalInSeason 是该学院、部门和季节的学生人数。

我想我需要 subselects 但现在想不出来。有帮助吗?

Window 函数应该完成任务:

SELECT 
  Faculty, 
  Department, 
  Season, 
  Student, 
  Score, 
  DENSE_RANK() OVER (PARTITION BY Faculty, Department, Season ORDER BY Score DESC) AS NumberInSeason, 
  COUNT(*) OVER (PARTITION BY Faculty, Department, Season) AS TotalInSeason 
FROM Table

试试这个(未测试)

SELECT  a.Faculty,a.Department,a.Season,a.Student,Score,count(b.*)  as NumberInSeason , 
SELECT (count(*) FROM table c ON c.Faculty=a.Faculty AND c.Department=a.Department,c.Season=a.Season) AS TotalInSeason 
FROM Table a
LEFT JOIN Table b ON a.Faculty=b.Faculty and a.Department=b.Department and a.Season=b.Season and a.score<=b.score
group by a.Faculty,a.Department,a.Season,a.Student,a.Score