sql - SQL join sum groupby where
问题描述
我有以下两个表: 小提琴
因此,我需要 tab1 中的“名称”列表,其中“dur”的总和为 10 或更大。两个表之间的连接是来自 tab1 的“数字”,可以在 tab2 的“xxx”或“yyy”列中找到。所以预期的输出应该是:Jack, Anna
因为 Jack(1234) 的“dur”之和为 10,而 Anna(7582) 的“dur”之和为 12。
到目前为止,我知道如何根据一列 XXX 获得总和:
SELECT tab1.name FROM tab1
INNER JOIN (
SELECT xxx, SUM(dur) AS total_dur
FROM tab2
GROUP BY xxx)
tab2 ON tab1.number=tab2.xxx
WHERE total_dur >=10
但我如何也考虑第二个'yyy'列?
解决方案
您可以OR
在连接条件中使用来检查两列。使用HAVING
也可能使查询更具可读性。
SELECT name FROM tab1
JOIN tab2 ON xxx = number OR yyy = number
GROUP BY name
HAVING SUM(dur) >= 10
推荐阅读
- python - 在 Elasticsearch dsl 中分析每个帖子的单个标签
- amazon-web-services - AWS - 使用网络 ACL 限制到 SaaS 服务的出站流量
- php - 使用 mysql php 进行全文搜索
- java - Kotlin:java.lang.RuntimeException:无法创建类 com.app.datastorepreferences.MyViewModel 的实例
- amazon-web-services - 该参数未应用于 sam 模板
- java - java.io.IOException:无效的密钥库格式/无法识别的密钥库格式。使用旧的 android 密钥库时,请以指定的类型加载它
- git - 以树的形式显示提交的历史
- xml - 使用 MSXML2 解析 xml 的问题:当应该列出十个不同的节点时重复一个第一个节点
- c# - 如何在 Xunit 中模拟 CreateBatchWrite 对象
- javascript - How to return data from Firestore promise?