php - 如何从一张表中选择两个 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')
寻求帮助
解决方案
您可以使用条件聚合来做到这一点:
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')
推荐阅读
- .net - 如何修复 IdentityServer ReactJS 的路由
- python - 在 Maya 中,如何使用 Python 切换“忽略隐藏在大纲中”标志?
- google-apps-script - 如何循环浏览 Google 表格中的单列日期,然后根据日期发送电子邮件
- sql - 查找每天至少提交一次的唯一黑客总数,并查找每天提交最多次数的hacker_id
- c# - 如何在泛型方法中使用 Nullable 变量
- c# - 可空引用类型意外 CS8629 可空值类型可能为带有临时变量的空
- java - 实现 EventProcessingConfigurer,registerErrorHandler 以正确处理 @EventHandler 错误
- java - 将数据从活动传递到选项卡片段
- javascript - Nuxt.js 应用程序在重新加载后不使用 asyncData 获取数据
- powershell - 正在进行的工作 - 用于从 CSV 创建多个邮箱的 Powershell 脚本 - 具有一些附加功能