mysql - 一个查询中的多个 COUNT(DISTINCT CAST(field AS DATE)

标签 mysql

我需要根据 2 个标准(作为一个整体)找到 countdistinct 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

这显然行不通,但在尝试一起研究 CASTCASE 之后,我没有找到任何东西。如果这不是日期字段,我知道该怎么做。有没有人这样做过? 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/

相关文章:

mysql - 我无法创建这个过程

sql - 按字段的前两个字符对 SQL 进行排序

mysql - 将 Django 项目链接到 EC2 实例中的现有 MySQL 数据库

WHERE 子句中的 MySQL CAST 和 LIKE

python - 将 mysql db 放入内存

mysql - 如何使用sqlyog或heidisql连接到远程mysql

php - 限制所有 MySQL 查询的结果

php - 字符串值比较优化 MySQL 查询

PHP/Javascript - 更改按钮图像并调用数据库 onClick()?

mysql - 在 mySql 中找到类似的条目