我想列举教授“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