首页 > 解决方案 > 如何从一张表中选择两个 SUM,但一个 SUM 只能从最大值中选择。数据

问题描述

我有这张桌子

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),但仅用于最高价值每个房间。在此表中,房间 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')

寻求帮助

标签: phpmysql

解决方案


您可以使用条件聚合来做到这一点:

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

推荐阅读