我想列舉教授「java」的姓名教授,他教的次數以及他教授的最新年份和學期。MAX函數和GROUP BY函數不能一起工作
我試過這個查詢,但它給了兩個同名的行。
SELECT i.I_FNAME, COUNT(f.I_ID) as myCount, f.CO_TERMNUMBER, f.CO_YEAR
FROM
INSTRUCTOR i
JOIN TEACHINGQUALIFICATION t
ON i.I_ID = t.I_ID
JOIN COURSE c
ON c.C_ID = t.C_ID
JOIN COURSEOFFERING f
ON i.I_ID = f.I_ID
WHERE c.C_TITLE = 'java'
GROUP BY t.I_ID, i.I_FNAME, f.CO_TERMNUMBER, f.CO_YEAR
ORDER BY f.CO_YEAR desc
輸出:
1 Gaurav 1 4 2006
2 Gaurav 1 1 2000
預期輸出:
1 Gaurav 2 4 2006
代碼,錯誤:
我還試圖噸他的代碼與條件 「AND f.CO_YEAR = MAX(f.CO_YEAR)」,但它顯示這個錯誤 「功能組這裏不允許」
SELECT t.I_ID, i.I_FNAME, COUNT(f.I_ID) as Cnt, f.CO_TERMNUMBER, f.CO_YEAR
FROM
INSTRUCTOR i
JOIN TEACHINGQUALIFICATION t
ON i.I_ID = t.I_ID
JOIN COURSE c
ON c.C_ID = t.C_ID
JOIN COURSEOFFERING f
ON i.I_ID = f.I_ID
WHERE c.C_TITLE = 'itec801' AND f.CO_YEAR= MAX (f.CO_YEAR)
GROUP BY t.I_ID, i.I_FNAME, f.CO_TERMNUMBER, f.CO_YEAR
ORDER BY f.CO_YEAR desc
修訂
此代碼顯示最近一年的輸出,但問題是當它提取最新的行時,計數器停在那裏並顯示1個值。但我想統計所有的行,然後只顯示最新的一年。
SELECT t.I_ID, i.I_FNAME, COUNT(f.I_ID) as Cnt, f.CO_TERMNUMBER, f.CO_YEAR
FROM
INSTRUCTOR i
JOIN TEACHINGQUALIFICATION t
ON i.I_ID = t.I_ID
JOIN COURSE c
ON c.C_ID = t.C_ID
JOIN COURSEOFFERING f
ON i.I_ID = f.I_ID
JOIN
(
SELECT I_ID, MAX(CO_YEAR) LatestYear
FROM COURSEOFFERING GROUP BY I_ID
)
f2 ON f.I_ID = f2.I_ID AND f.CO_YEAR = f2.LatestYear
WHERE c.C_TITLE = 'itec801'
GROUP BY t.I_ID, i.I_FNAME, f.CO_TERMNUMBER, f.CO_YEAR
having f.CO_YEAR= MAX (f.CO_YEAR)
ORDER BY f.CO_YEAR desc
新的輸出:
1 Gaurav 1 4 2006
預期輸出:
1 Gaurav 2 4 2006
它爲我工作了一段時間,但它從最近的日期只顯示一位教授的姓名。它必須向所有明確授課的教授展示他們各自教授同一課程'itec801'的最新日期。 – nirmalgyanwali
請檢查您的加入條件。 – TechDo