创建日期前6个月调用的SQL计数
我正在试图找出SQL语句,以便:创建日期前6个月调用的SQL计数,sql,date,count,teradata,where-clause,Sql,Date,Count,Teradata,Where Clause,我正在试图找出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
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…2020年3月14日…2020年7月23日…排除在结果集中
- 45678…..2020年2月14日…..2020年7月23日…..包括在结果集中
- 91011…..01/20/2020…..07/23/2020…..包括在结果集中
- 91211……。01/24/2020…07/23/2020…..排除在结果集中
- 12345……。2019年11月14日…2020年7月23日…..排除在结果集中
- 我想你想要:
select count(distinct call_nbr) no_calls
from mytable
where call_date >= add_months(create_date, -6)
如果您有一列表示帐户\u id
,则可以使用group by
子句获取每个帐户的呼叫计数:
编辑:似乎您需要条件聚合:
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
我想你想要:
select count(distinct call_nbr) no_calls
from mytable
where call_date >= add_months(create_date, -6)
如果您有一列表示帐户\u id
,则可以使用group by
子句获取每个帐户的呼叫计数:
编辑:似乎您需要条件聚合:
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
请用您正在运行的数据库标记您的问题:mysql oracle,postgresql…?列的数据类型是什么
call\u date
和create\u date
?请用您正在运行的数据库标记您的问题:mysql oracle,postgresql…?列call\u date
和create\u date
的数据类型是什么?我认为这将限制数据集结果仅限于call\u date>=add\u months(create\u date,-6)的记录。我希望引入所有创建的帐户(在指定的日期范围内),但是,将呼叫计数限制为6个月范围内的帐户。希望这是有意义的。我认为这将把数据集结果限制为只有call\u date>=add\u months(create\u date,-6)的记录。我希望引入所有创建的帐户(在指定的日期范围内),但是,将呼叫计数限制为6个月范围内的帐户。希望这是有意义的。