创建日期前6个月的sql调用计数

qni6mghb  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(260)

我正在尝试找出sql来:
不同呼叫的计数
在账户创建前6个月在账户上进行
我还需要转换日期字段。我在想:

case when (call_date as date format 'MM/DD/YYYY') 
between (create_date as date format 'MM/DD/YYYY') and 
(ADD_MONTHS, (create_date as date format 'MM/DD/YYYY), -6) 
then COUNT (DISTINCT call_nbr) as calls

以下是我正在处理的数据片段。答案是我需要3个电话。
注意:这两个日期在db表中都标记为日期格式。
呼叫号码…..呼叫日期…..创建日期
12345…..03/14/2020…..07/23/2020…..包括在结果集中
12345…..03/14/2020…..07/23/2020…..排除在结果集中
45678…..02/14/2020…..07/23/2020…..包括在结果集中
91011………2020年1月20日….2020年7月23日…..包括在结果集中
91211…..01/24/2020…..07/23/2020…..排除在结果集中
12345………2019年11月14日….2020年7月23日…..排除在结果集中

j8yoct9x

j8yoct9x1#

我想你想要:

select count(distinct call_nbr) no_calls
from mytable
where call_date >= add_months(create_date, -6)

如果有一列表示 account_id ,则可以使用 group by 子句以获取每个帐户的呼叫数:

select account_id, count(distinct call_nbr) no_calls
from mytable
where call_date >= add_months(create_date, -6)
group by account_id

编辑:似乎您需要条件聚合:

select 
    account_id, 
    count(distinct case when call_date >= add_months(create_date, -6) then call_nbr end) no_calls
from mytable
group by account_id

相关问题