最も多くの Java コースを教えたインストラクターによって教えられた Java コースのインストラクターをリストしようとしています。
まず、Java コースを教えるインストラクターを選択します
SELECT z.FIRST_NAME,z.LAST_NAME,b.COURSE_NO, MAX(b.DESCRIPTION) AS DESCRIPTION
FROM INSTRUCTOR z
JOIN SECTION w ON z.INSTRUCTOR_ID = w.INSTRUCTOR_ID
JOIN COURSE b ON w.COURSE_NO = b.COURSE_NO
WHERE DESCRIPTION like '%Java%'
GROUP BY z.FIRST_NAME,z.LAST_NAME,b.COURSE_NO
これまでに必要な結果が表示されます
FIRST_NAME LAST_NAME COURSE_NO DESCRIPTION
------------------------- ------------------------- ---------- ---------------------------------
Tom Wojick 120 Intro to Java Programming
Gary Pertez 120 Intro to Java Programming
Anita Morris 124 Advanced Java Programming
Todd Smythe 122 Intermediate Java Programming
Charles Lowry 122 Intermediate Java Programming
Charles Lowry 120 Intro to Java Programming
Fernand Hanks 122 Intermediate Java Programming
etc...
しかし、最も多くの Java コースを教えたインストラクターを選択しようとすると、まったく異なる結果が得られます。
SELECT z.FIRST_NAME,z.LAST_NAME,b.COURSE_NO,b.DESCRIPTION
FROM INSTRUCTOR z
JOIN SECTION w ON z.INSTRUCTOR_ID = w.INSTRUCTOR_ID
JOIN COURSE b ON w.COURSE_NO = b.COURSE_NO
WHERE DESCRIPTION like '%Java%'
GROUP BY z.FIRST_NAME,z.LAST_NAME,b.COURSE_NO,b.DESCRIPTION
HAVING MAX(b.DESCRIPTION) =
(SELECT MAX(DESCRIPTION)
FROM (
SELECT z.FIRST_NAME,z.LAST_NAME,b.COURSE_NO, MAX(b.DESCRIPTION) AS DESCRIPTION
FROM INSTRUCTOR z
JOIN SECTION w ON z.INSTRUCTOR_ID = w.INSTRUCTOR_ID
JOIN COURSE b ON w.COURSE_NO = b.COURSE_NO
WHERE DESCRIPTION like '%Java%'
GROUP BY z.FIRST_NAME,z.LAST_NAME,b.COURSE_NO
)
)
ORDER BY z.FIRST_NAME,z.LAST_NAME,b.COURSE_NO,b.DESCRIPTION;
これらの Java コースの説明を数え、そこから最大数を選択して、すべての Java コースで 1 人のインストラクターのみを表示するにはどうすればよいでしょうか?