0

我有一个有 2 列的表。

柱子

学生证 课程 ID

这两列彼此之间都有多对多的关系。我想知道 - 1. 所有学生中学生注册的平均课程数。2.所有学生注册的课程数量的百分之九十。

我已经尝试过使用 PERCENT_DISC() 但不知何故我无法弄清楚。谁能帮我解决这个问题?

4

1 回答 1

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

于 2013-06-28T00:40:57.850 回答