【问题标题】:SQL - Counting Distinct records based on two columnsSQL - 根据两列计算不同的记录
【发布时间】:2017-06-10 00:23:01
【问题描述】:

我知道必须有一个简单的方法来做到这一点,但我正在画一个空白。我正在查看 3 个字段;客户 ID、代码、代码日期

当代码出现在客户 ID 上时,它会获得一个代码日期。我正在按日期范围内的客户 ID 查找代码计数,但日期不同。

ID     Date       Code
ABC    1/2/17     XYZ
ABC    1/3/17     XYZ
ABC    1/4/17     XYZ
ABC    1/4/17     XYZ
ABC    1/5/17     XYZ

在这种情况下,有 5 条记录,但我希望显示最终结果

ID      CodeCount
ABC     4

因为 1/4 是重复的。

非常感谢所有帮助!

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    试试这个

    SELECT Id AS [Type],
           COUNT(DISTINCT date) AS Count
    FROM table
    GROUP BY Id
    

    【讨论】:

      【解决方案2】:

      您需要在 count(distinct) 中的 Date 列上使用 Trunc() 以认为两个日期相同。查看此查询的输出。

            SELECT dt "Date" ,
               COUNT( DISTINCT dt2 ) OVER () c_dtime ,
               COUNT( DISTINCT TRUNC(dt2) ) OVER () c_date FROM
               ( SELECT TO_CHAR(SYSDATE, 'MM/DD/YYYY HH24:MI:SS' ) dt , SYSDATE dt2 FROM DUAL
            UNION ALL
               SELECT TO_CHAR(SYSDATE + 0.04, 'MM/DD/YYYY HH24:MI:SS' ) dt ,
                 SYSDATE + 0.04 dt2
            FROM DUAL
               ) ;
      -------------------------------------------
            Date,         C_Dtime, C_Date
      06/09/2017 22:47:54 2        1
      06/09/2017 21:50:18 2        1
      

      【讨论】:

        猜你喜欢
        • 2020-10-25
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2011-09-26
        • 1970-01-01
        • 2021-11-11
        • 2022-12-09
        相关资源
        最近更新 更多