【发布时间】:2021-02-09 14:30:31
【问题描述】:
我正在尝试按月计算日志表中的唯一用户 ID。到目前为止,我想出了以下查询:
SELECT
COUNT(CASE WHEN log_date LIKE '2020-01%' THEN 1 END) AS januari
FROM user_log;
此查询返回 1 月 user_log 的所有行的总数。但是我想知道有多少 unique 用户在 Januari 中登录。所以我需要类似的东西:
SELECT
COUNT(**DISTINCT user_id** CASE WHEN log_date LIKE '2020-01%' THEN 1 END) AS januari
FROM user_log;
我也尝试过 GROUP BY,但到目前为止没有运气。有人有什么建议吗?
【问题讨论】:
-
使用字符串上下文测试日期是不好的做法。使用
log_date BETWEEN '2020-01-01' AND '2020-01-31'- 这允许使用索引。
标签: mysql sql count case distinct