sql - 如何更正此 SQL 查询?
问题描述
我正在使用 DB2 表。每个客户都有多个基金余额存储在“余额”列和“As_of_date”列中,以跟踪他们从那时起拥有该余额金额的日期。我需要退回过去 90 天内总余额超过 100 万的所有客户。
我不知道该怎么做。我是 SQL 新手
select Customer from MyTable
where As_of_date >= (current_date - 90 DAYS)
HAVING SUM(Balance) >= '1000000.00'
解决方案
~不清楚这是什么数据库引擎~(哎呀:说v清楚DB2!),或者为什么到处都是大写字母,但这里是sql伪代码中的答案,或多或少:
select Customer, sum(Balance) as CustomerBalance
from Mytable
where As_of_date >= (current_date - 90 DAYS)
group by Customer
having CustomerBalance > 1000000
解释:
- 我们要选择所有客户及其所有余额,
- 但我们首先过滤掉任何超过 90 天的内容(
where as_of_date ...
子句) - 按
group by
客户细分数据,因此对于每个客户,我们获取他们所有的余额(过去 90 天)并为每个客户返回一个值(总和) - 然后最后该
having
子句丢弃任何不超过一百万的 <Customer, CustomerBalance> 行。
推荐阅读
- javascript - 控制最后显示插入符号的位置
- visual-studio - 业务中心元数据文件使用 Visual Studio OData 连接服务生成错误的 APi 路由
- c - emmc驱动程序内核linux在配置为可加载模块时崩溃
- c# - UDP - “ConnectAndSend 与 SendTo”
- java - 检查互联网连接是否可用 (https)
- python - Python 的 Dominate 库中是否有类似于 .replace() 的函数?
- django - 在 DjangoAdmin 中正确显示 ManyToManyField
- apache-kafka - 从 Postgres 到 Kafka,带有更改跟踪
- ios - KVKCalendar 不符合协议 CalendarDataSource
- java - Google Cloud Firestore - 在此服务器上找不到 URL