我有这张 table
Room Papers Pens
1 30 30
3 10 10
4 15 15
4 35 25
3 25 5
2 15 45
2 5 15
4 7 8
4 11 9
4 12 11
1 8 8
我需要获取 2,4 号房间的 SUM(Papers),我知道如何获取(它将总共 100),但随后我还需要在此查询中获取 2,4 号房间的 SUM(Pens),但仅限于此每个房间的最高值(value)。在此表中,房间 2 的值为 45,房间 4 的值为 25,并且 SUM 必须为 70。
我已经使用了这段代码,但当然它对于 Pens 值来说不能正确工作......
SELECT SUM(Papers) AS Papers, SUM(DISTINCT Pens) AS Pens FROM MyTable
WHERE (Room = '2' OR Room = '4')
感谢帮助
最佳答案
您可以通过条件聚合来做到这一点:
SELECT
SUM(Papers) AS Papers,
SUM(
CASE
WHEN EXISTS (
SELECT 1 FROM MyTable
WHERE Room = m.Room AND Pens > m.Pens
) THEN 0
ELSE Pens
END
) AS Pens
FROM MyTable m
WHERE (Room = '2' OR Room = '4')
关于php - 如何从一张表中选择两个 SUM,但必须仅从 max 中生成一个 SUM。数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56367870/