0

更新 このようなクエリがあります

select sl.College_ID,sl.Department_ID,COUNT(sl.RegisterNumber)  from StudentList sl
group by  sl.College_ID,sl.Department_ID
order by sl.College_ID,sl.Department_ID asc

abouve クエリは以下の結果を返します。私は 200 の大学 ID を持ち、各大学には 6 の department_id があります。各部門のカウント [学生数] を取得できます。

College_Id  Dept_Id  count 
1           1           100
1           2           210
2           3           120
2           6           80
3           1           340

しかし、私の質問は、各部門の最大数[学生]を表示する必要があることです

このようなもの

college_ID  Dept_Id  count 
3               1       340
26              2       250

私はこれを試しましたが、エラーが発生しました

select sl.College_ID,sl.Department_ID,COUNT(sl.RegisterNumber)  from StudentList sl
group by  sl.College_ID,sl.Department_ID
having  COUNT(sl.RegisterNumber)=max(COUNT(sl.RegisterNumber))
order by sl.College_ID,sl.Department_ID asc

誰かが私を助けてくれますか

4

2 に答える 2

2

たぶん、このようなものですか?

SELECT sl.College_ID, sl.Department_ID, COUNT(sl.RegisterNumber) As StudentCount, s2.MaxCount
    FROM StudentList sl
    INNER JOIN (
        SELECT Department_ID, MAX(StudentCount) AS MaxCount
            FROM (
                SELECT College_ID, Department_ID, COUNT(*) As StudentCount
                    FROM StudentList
                    GROUP BY College_ID, Department_ID
                ) s1
            GROUP BY Department_ID
        ) s2 ON sl.Department_ID = s2.Department_ID
    GROUP BY sl.College_ID, sl.Department_ID, s2.MaxCount
    HAVING COUNT(sl.RegisterNumber) = s2.MaxCount
    ORDER BY sl.College_ID, sl.Department_ID ASC

編集:私はあなたの質問により正確に答えるためにクエリを更新しました.私はあなたCollege_IDが最大数で欲しい部分を逃しました.

編集 2 : わかりました、これで動作するはずです。集計を集計するために、2 番目のネストされたサブクエリが必要でした。異なるグループの集計を比較するより良い方法を知りません。

于 2013-10-07T12:50:25.380 に答える