SubSelects 用于订单和计数
SubSelects for Order and Count
我有一个 select 这样的:
SELECT Faculty,Department,Season,Student,Score FROM Table
我想要两个像这样的新专栏:

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
我有一个 select 这样的:
SELECT Faculty,Department,Season,Student,Score FROM Table
我想要两个像这样的新专栏:
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