首页 > 解决方案 > 如何更正此 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'

标签: sqldb2

解决方案


~不清楚这是什么数据库引擎~(哎呀:说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> 行。

推荐阅读