php - 如何从一张表中选择两个 SUM,但必须仅从 max 中生成一个 SUM。数据

标签 php mysql

我有这张 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/

相关文章:

php - 未找到 PECL libzip

mysql - 不同查询不会使用 AND 运算符给出任何结果

mysql:有什么方法可以以与存储顺序不同的顺序获取记录?

php - 使用 php 跟踪文件下载进度

基于MySQL查询输出的PHP决策

PHP 相当于 MySQL 的 UNIX_TIMESTAMP()?

PHP mysql查询insert where

sql - 从与另一个表具有相同关系的表中获取字段

java - 从 java 执行过程时出现 JDBC 连接错误

php, 文件下载