我需要根据 2 个标准(作为一个整体)找到 count
的 distinct dates
,但我还需要显示 distinct date
对 2 个条件中的每一个都进行计数。因为日期字段还包括时间,所以我使用:
COUNT(DISTINCT CAST(se.SeriesDate AS DATE))
,效果很好。但是我正在努力为我的 WHERE 子句中的 2 个条件中的每一个包含相同的计数。
我试过:
SELECT ID,
COUNT(DISTINCT CAST(se.SeriesDate AS DATE)) VISITS,
COUNT(DISTINCT CAST(se.SeriesDate AS DATE) CASE WHEN se.Manufacture LIKE 'CIRRUS%' THEN se.SeriesDate END) Cirrus,
COUNT(DISTINCT CAST(se.SeriesDate AS DATE) CASE WHEN se.Manufacture LIKE 'Glaucoma%' THEN se.SeriesDate END) Glaucoma
From patient
WHERE (se.Manufacture LIKE 'CIRRUS%' OR se.Manufacture LIKE 'Glaucoma%'
GROUP BY ID
我希望它返回这个(这些是不同的访问日期):
Visits: 9
Cirrus: 6
Glaucoma: 3
这显然行不通,但在尝试一起研究 CAST
和 CASE
之后,我没有找到任何东西。如果这不是日期字段,我知道该怎么做。有没有人这样做过? TIA!
最佳答案
条件聚合语法:
SELECT ID,
COUNT(DISTINCT CAST(se.SeriesDate AS DATE)) VISITS,
COUNT(DISTINCT CASE WHEN se.Manufacture LIKE 'CIRRUS%'
THEN CAST(se.SeriesDate AS DATE) END) Cirrus,
COUNT(DISTINCT CASE WHEN se.Manufacture LIKE 'Glaucoma%'
THEN CAST(se.SeriesDate AS DATE) END) Glaucoma
From patient
WHERE (se.Manufacture LIKE 'CIRRUS%' OR se.Manufacture LIKE 'Glaucoma%')
GROUP BY ID;
关于mysql - 一个查询中的多个 COUNT(DISTINCT CAST(field AS DATE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66320851/