【发布时间】:2018-04-14 16:43:24
【问题描述】:
我不明白为什么我在 SQL 中选择具有 max avg 的记录时遇到了一个愚蠢的问题。
有问题的表是由这个查询生成的:
SELECT *
FROM (SELECT MATRDOC AS TEACHERID
FROM DOCENTE
WHERE MATRDOC NOT IN (SELECT MATRDOC
FROM CORSO
WHERE AREA <> 'BASI DI DATI')) DOC,
(SELECT C.CODCORSO AS COURSEID,
MATRDOC AS TEACHERID,
AVG(NUMSTUDENTI) AS GVA
FROM CORSO C, LEZIONE L
WHERE C.CODCORSO = L.CODCORSO
GROUP BY C.CODCORSO, MATRDOC) L
WHERE DOC.TEACHERID = L.TEACHERID;
这个输出:
TEACHERID COURSEID GVA
S12346 C9 40.3333
S12346 C3 213
S12346 C11 88
S12348 C7 123
S12348 C5 79
S12348 C13 82.5
现在我想获取最大'GVA'的TEACHERID和COURSEID,所以我在查询末尾添加了:
GROUP BY TEACHERID
HAVING MAX(GVA)
但它不起作用,我获得了这些值:
TEACHERID COURSEID GVA
S12346 C9 40.3333
S12348 C7 123
【问题讨论】:
-
你想要什么结果?你用的是什么数据库?
-
每个teacherid是1行还是1行?
-
每个teacherid 1行,我在底部做了一点解释:stackoverflow.com/a/49833871/2354957
标签: mysql group-by max average