sql - 查询具有不同条件的同一列 - 组
问题描述
我有一个这样的事务表:
acct_id trans_type date_of_tran
-------------------------------------------------
A WITHDRAW 2021-Jun-20
A DEPOSIT 2021-Jun-21
A DEPOSIT 2021-Jun-22
B WITHDRAW 2021-Jun-20
B WITHDRAW 2021-Jun-21
C DEPOSIT 2021-Jun-20
C DEPOSIT 2021-Jun-21
C WITHDRAW 2021-Jun-21
C WITHDRAW 2021-Jun-21
我想找出哪些账户只提款但在特定时间段内没有存入任何钱。
示例 - 账户 B 仅提款 - 6 月 20 日至 21 日没有存款
强文本
解决方案
您可以计算每个帐户 ID 的行数,并将其与 WITHDRAW 行数进行比较。如果它们相同,则该帐户只有提款
SELECT acct_id
FROM transaction
WHERE date_of_tran BETWEEN '2021-06-20' AND '2021-06-21'
GROUP BY acct_id
HAVING COUNT(*) = COUNT(CASE WHEN trans_type = 'WITHDRAW' THEN 1 END)
推荐阅读
- javascript - 拖放适用于 IE 和边缘,但不适用于 chrome 或 firefox
- python - 如何修复未在 vscode 中加载但在 IDLE python 中加载的 dll
- java - 为什么我必须给父母创建客户?
- spring-data-jpa - 为同一数据库列创建可变参数@Query
- terminal - 通过终端复制应用程序而不仅仅是内容
- python - 在 Python 中拆分手写数字与 openCV 相互接触以进行 MNIST 预处理
- ios - 如何在反应原生视图中显示更多元素?
- spring - 如何使 Spring Boot 默认为 application/json;charset=utf-8 而不是 application/json;charset=iso-8859-1
- c++ - 检查用户输入是否等于数组元素
- swift - 无法调用非函数类型“IndexPath”的值