db2 根据SQL中的类型和日期计算非重复ID

qq24tv8q  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(148)

我有一个表,其中的数据看起来像这样。我正在查找每个TYPEDATE的总计数。

因此,对于上述数据,输出将为:

我尝试了以下查询,但结果包含多次计数的重复项。

SELECT 
    DATE,
    SUM(CASE WHEN TYPE = 'Existing' THEN 1 ELSE 0 END) AS "EXISTING",
    SUM(CASE WHEN TYPE = 'New' THEN 1 ELSE 0 END) AS "NEW"
FROM 
    mytab
WHERE 
    DATE >= '2022-01-01'
GROUP BY    
    DATE ;

上述查询的输出:

o7jaxewo

o7jaxewo1#

未经测试,但也许是你想要的:

SELECT 
    DATE,
    COUNT(DISTINCT CASE WHEN TYPE = 'Existing' THEN ID END) AS "EXISTING",
    COUNT(DISTINCT CASE WHEN TYPE = 'New' THEN ID END) AS "NEW"
FROM 
    mytab
WHERE 
    DATE >= '2022-01-01'
GROUP BY    
    DATE ;
a1o7rhls

a1o7rhls2#

一种方法是在子查询的基础上进行条件聚合,该子查询首先只从原始表中获取不同的记录。

SELECT 
    DATE,
    COUNT(CASE WHEN TYPE = 'Existing' THEN 1 END) AS "EXISTING",
    COUNT(CASE WHEN TYPE = 'New' THEN 1 END) AS "NEW"
FROM (SELECT DISTINCT ID, TYPE, DATE FROM mytab) t
WHERE DATE >= '2022-01-01'
GROUP BY DATE;

相关问题