我有下表:
'A', '2014-07-28'
'A', '2014-07-27'
'A', '2014-07-20'
'B', '2014-07-21'
'B', '2014-07-20'
'A', '2014-07-22'
'A', '2014-07-22'
'B', '2014-07-22'
'B', '2014-07-24'
'B', '2014-07-27'
我需要获取用户登录历史记录的报告。该报告应显示登录独特日期的用户数。
例如,在27日,A和B都登录。因此报告应该显示2。 在22日,A登录两次,而B登录一次,因此报告应显示2。
如果我通过user_id选择DISTINCT,那么不同日期的同一用户将不会被计算在内。 如果我按日期选择DISTINCT,那么不同用户的同一天就不会被计算在内。
我希望报告计算每个日期的唯一ID数。然后总结所有的日子。
最好的方法是什么?
答案 0 :(得分:1)
您将不得不使用Group By
条款来获取每天的点数
Select user_id, `date`, count(*) As count
From loginTable
Group By user_id, `date`
然后在派生表中使用另一个group by对每个用户求和。
Select d.user_id, Sum(*) As TotalCount
From (
Select user_id, `date`, count(*) As count
From loginTable
Group By user_id, `date`) d
Group By d.user_id