mysql - 如何在 MySQL 查询中使用 count 和 CASE 条件?
问题描述
SELECT
COUNT(
CASE WHEN ( DATE(igs.start_date) >= DATE('2020-05-01')
AND DATE(igs.start_date) <= DATE('2020-05-31')
THEN igs.id
ELSE 0
END
) AS totalSessions
FROM
`ignite_session` igs
我的要求是我想要特定月份的会话数。从上面的查询中,我得到了错误的计数。当我检查以下查询时,它是 0。
SELECT
COUNT(id)
FROM
ignite_session igs
WHERE
DATE(igs.start_date) >= DATE('2020-05-01')
AND DATE(igs.start_date) <= DATE('2020-05-31')
第一个查询是复杂查询的一小部分。我不想在 where 语句中使用日期条件。请帮我处理这个 CASE STATEMENT 查询。totalSessions
应该返回 0。
解决方案
您应该NULL
在 else 情况下使用 a 。
喜欢 :
SELECT
COUNT(
CASE WHEN (DATE(igs.start_date) >= DATE('2020-05-01')
AND DATE(igs.start_date) <= DATE('2020-05-31'))
THEN igs.id
ELSE NULL
END
) AS totalSessions
FROM
`ignite_session` igs
MySQL 5.6 架构设置:
CREATE TABLE t1
(`c1` int)
;
INSERT INTO t1
(`c1`)
VALUES
(1),
(2),
(3),
(4),
(5)
;
查询 1:
select count(case when c1 > 2 then 1 else null end) as nb_count from t1
结果:
| nb_count |
|----------|
| 3 |
推荐阅读
- html - 如果 Firefox 支持 WebP,为什么 React 会加载故障转移 img src?
- mapbox-gl-js - React Map GL 在沙箱中运行时缓存错误
- regex - 如何从此正则表达式中删除哈希标签
- sql - 查询表中具有一个值但没有另一个值的所有唯一组合
- c# - 添加HttpClient
注册为瞬态,它可以有效地处理大量并发请求吗? - python - Pyinstaller --onefile 警告文件已经存在但不应该
- sql - 动态 Pivot N 行到 N 列
- mysql - 是否可以将 SQL 数据库中的特定数据导出到 word doc 中预先格式化的表格中?
- django - Django 应用程序的谷歌分析只显示根域而不是页面标题
- google-sheets - 对于 A 列中具有共同值的行,如何将唯一值应用于 A 列