我有一个包含2列的单个表。
学生证 课程标识
这两列彼此之间存在多对多的关系。 我想知道 - 1.学生在所有学生中注册的平均课程数量。 2.所有学生注册课程数量的90%。
我使用PERCENT_DISC()尝试了这个但不知何故我无法搞清楚。 任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
第一个问题:
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
上