0

2列の単一のテーブルがあります。

学生証コースID

これらの列は両方とも、互いに多対多の関係を持っています。知りたいこと - 1. 学生全体の学生が登録したコースの平均数。2. 全学生が登録した科目数の 90 パーセンタイル。

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 に答える