我有一个有 2 列的表。
柱子
学生证 课程 ID
这两列彼此之间都有多对多的关系。我想知道 - 1. 所有学生中学生注册的平均课程数。2.所有学生注册的课程数量的百分之九十。
我已经尝试过使用 PERCENT_DISC() 但不知何故我无法弄清楚。谁能帮我解决这个问题?
我有一个有 2 列的表。
学生证 课程 ID
这两列彼此之间都有多对多的关系。我想知道 - 1. 所有学生中学生注册的平均课程数。2.所有学生注册的课程数量的百分之九十。
我已经尝试过使用 PERCENT_DISC() 但不知何故我无法弄清楚。谁能帮我解决这个问题?
对于您的第一个问题:
SELECT AVG(numCourses)
FROM(
SELECT Cast(COUNT(CourseId) AS DECIMAL(16,2)) as numCourses
FROM YourTable
GROUP BY StudentID
) Grouped
现在关于百分位数,如果我完全理解了问题中的问题:
第一个查询不是答案,但有助于理解它。它显示了每个学生的课程数量以及所有学生的离散百分位数:
SELECT StudentID, count(CourseId)
, PERCENTILE_DISC(0.5)
WITHIN GROUP (ORDER BY COUNT(CourseId))
OVER (PARTITION BY 1) Percentile
FROM YourTAble
GROUP BY StudentID;
此查询将显示百分位数:
SELECT DISTINCT PERCENTILE_DISC(0.5)
WITHIN GROUP (ORDER BY COUNT(CourseId))
OVER (PARTITION BY 1) Percentile
FROM YourTAble
GROUP BY StudentID
我把它放在这个SQLFiddle