個人的には、それらを快適に使用できるようになると、よりクリーンで読みやすいコードが生成されると思います。例として、 #4018793の回答と私の回答を比較してください。基本的に同じことをしました。私は CTE を使用しましたが、あなたは使用しませんでした。
CTEなしのあなたの答え:
SELECT
course,
section,
grade,
gradeCount
FROM
table
INNER JOIN
(SELECT
grade,
Max(gradeCount) as MaxGradeCount
FROM
table
) MaxGrades
ON table.grade = MaxGrades.grade
AND table.gradeCount = MaxGrades.MaxGradeCount
ORDER BY
table.grade
CTEでの私の答え:
;with cteMaxGradeCount as (
select
grade,
max(gradeCount) as MaxGradeCount
from @Test
group by grade
)
select
t.course,
t.SECTION,
t.grade,
t.gradeCount
from cteMaxGradeCount c
inner join @Test t
on c.grade = t.grade
and c.MaxGradeCount = t.gradeCount
order by t.grade