如何从一张表中选择两个SUM,但只能从最大数量中选择一个SUM。数据

时间:2019-05-29 20:14:23

标签: php mysql

我有这张桌子

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 BUT的SUM(Pens)以获得每个房间的最高价值。在此表中,这将是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')

THX寻求帮助

1 个答案:

答案 0 :(得分:0)

您可以通过条件聚合来做到这一点:

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')