如何从以下查询中获取最大值:
select sum(hours) from works_on group by pno;
+------------+
| sum(hours) |
+------------+
| 52.50 |
| 50.00 |
| 55.00 |
| 25.00 |
| 55.00 |
+------------+
我想要的是:
| 55.00 |
| 55.00 |
提前致谢。
答案 0 :(得分:3)
使用Having
条款和Sub-query
。像这样的东西
SELECT Sum(hours)
FROM works_on
GROUP BY pno
HAVING Sum(hours) = (SELECT Sum(hours) h
FROM works_on
GROUP BY pno
ORDER BY h DESC
LIMIT 1)
但SQL SERVER
我们TOP 1 with Ties
避免了sub-query
答案 1 :(得分:1)
如果您只想要最大值,则会有一行:
select sum(hours)
from works_on
group by pno
order by sum(hours) desc
limit 1;
我不确定为什么你会想要两行,但是Prdp的回答是正确的。
答案 2 :(得分:0)
或者,另一种只返回最大总和的方法,(仅一行) 是
Select Max(sumHrs)
From (Select sum(hours) sumHrs
From works_on
gtoup by pno) z
我想知道,从已经是聚合的结果集返回多行的值是多少,而不是原始数据行。如果您想要的结果还包含pno
值,那么我会理解(您想知道哪个pno
具有最高的小时数),但要获得最大小时数不是似乎有很多价值。或者你只是留下了一部分问题;为了简单起见,它们是什么?