mysql - 一个查询中的多个 COUNT(DISTINCT CAST(field AS DATE)
问题描述
我需要根据 2 个标准(作为一个整体)找到count
of distinct dates
,但我还需要显示distinct date
这 2 个标准中每一个的计数。因为日期字段还包含时间,所以我使用的是:
COUNT(DISTINCT CAST(se.SeriesDate AS DATE))
,它工作得很好。但是我正在努力为我的 WHERE 子句中的两个标准中的每一个都包括相同的计数。
我努力了:
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
一起研究之后,我什么也没找到。如果这不是日期字段,我了解如何执行此操作。有没有人这样做过?蒂亚!
解决方案
条件聚合语法:
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;
推荐阅读
- php - 未捕获的 PDOException:SQLSTATE [42S22]:未找到列:1054
- python-2.7 - 为什么 xlsxwriter 模块不像其他模块那样工作?
- android - 我想在 viewpager 中搜索和创建 listview 怎么可能
- java - Java Web,会话正在自动设置
- ruby-on-rails-5 - 单选按钮变成星星不起作用
- node.js - 如何在 MongoDB 中查找包含特定字符串的集合?
- android - 如何设置微调器的样式
- reactjs - 如何在我的项目中使用 cp-react-tree-table?
- java - 如何为将来的版本控制您的发布/订阅主题名称建模
- java - 如何初始化结果变量?