如何使用MAX隔离MySQL中的行?

olmpazwi  于 2023-02-15  发布在  Mysql
关注(0)|答案(1)|浏览(130)

我有以下MySQL表:
项目:pname,pnumber,plocation,dnum
工作时间:essn、pno、小时
这个查询的目标是返回项目名称和分配给任何项目的小时数最多的项目的小时数。
到目前为止,我已经

SELECT *, SUM(hours) as total_hours
FROM project p
    JOIN works_on w ON p.pnumber = w.pno
GROUP BY pname

当执行时给出以下内容:

我想用55个小时的时间来隔离这些条目,但我已经尝试过了

SELECT *, SUM(hours) as total_hours
FROM project p
    JOIN works_on w ON p.pnumber = w.pno
WHERE total_hours = MAX(total_hours)
GROUP BY pname

它给我错误代码:1054:"where子句"中的未知列"total_hours",我知道这显然是错误的,但我不确定我会采取什么其他方法。

wbrvyc0a

wbrvyc0a1#

WITH cte AS (
    SELECT *, SUM(w.hours) as total_hours,
           DENSE_RANK() OVER (ORDER BY SUM(w.hours) DESC) drnk
    FROM project p
    JOIN works_on w ON p.pnumber = w.pno
    GROUP BY p.pname
)
SELECT * FROM cte WHERE drnk = 1;

相关问题