创建日期前6个月调用的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

我正在试图找出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…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个月范围内的帐户。希望这是有意义的。