我有以下SQL表
|user|log_date |
| 2 |2016-06-23 10:55:52 |
| 2 |2016-06-23 10:55:54 |
| 2 |2016-06-24 10:53:54 |
| 2 |2016-06-24 10:54:54 |
等许多其他用户和log_dates。我想要的是检查整个月:
where left(log_date,7)="2016-06"
但我想每天只计算一天一次。因此,本例中我的表的结果应该是:
|user|count of unique days|
| 2 | 2 |
我想让它按用户分组。因此,对于表格中的每个用户,我都想要计算独特的日子。
有人可以给我一个提示吗?
答案 0 :(得分:1)
以这种方式编写条件允许使用索引...
SELECT t.user
, COUNT(DISTINCT DATE(t.log_date)) unique_days
FROM my_table t
WHERE t.log_date BETWEEN '2016-06-01 00:00:00' AND '2016-06-31 23:59:59' -- or t.log_date >= '2016-06-01 00:00:00' AND t.log_date < '2016-07-01 00:00:00'
GROUP
BY t.user;
(不确定为什么Sagi在纠正之后删除了他们的答案)
答案 1 :(得分:0)
试试这个:
select
user,
count(distinct day(log_date)) as `count of unique days`
from yourtable
where left(log_date, 7) = '2016-06'
group by user