Mysql 跨多个非唯一列的唯一记录
我有一个用户表(tbl),在同一日期有多个扫描,有些用户在多个日期有多个扫描Mysql 跨多个非唯一列的唯一记录,mysql,sql,Mysql,Sql,我有一个用户表(tbl),在同一日期有多个扫描,有些用户在多个日期有多个扫描 user date scan andy 20160301 T1 andy 20160301 T2 andy 20160301 T1 andy 20160401 T1 andy 20160401 T2 lee 20160401 T1 lee 20160401 T2 lee 20160701 T1 le
user date scan
andy 20160301 T1
andy 20160301 T2
andy 20160301 T1
andy 20160401 T1
andy 20160401 T2
lee 20160401 T1
lee 20160401 T2
lee 20160701 T1
lee 20160701 T2
lee 20160801 T1
lee 20160801 T2
tom 20160501 T1
tom 20160501 T2
tom 20160501 T2
我想要每个用户的唯一日期数(独立于每个日期发生的扫描次数),如下所示:
user NumVisits
andy 2
lee 3
tom 1
我尝试过几种方法,但最接近的是这个简单的查询:
SELECT user, COUNT(*) NumVisits FROM tbl GROUP BY user HAVING NumVisits > 1;
这将产生:
user NumVisits
andy 5
lee 6
tom 3
这个输出的问题是它解释了每个日期的多个扫描。有人能帮我弄清楚如何得到这个输出吗
user NumVisits
andy 2
lee 3
tom 1
为此使用Count(不同列)
:
SELECT
user,
COUNT(distinct date) NumVisits
FROM tbl GROUP BY user