mysql - 为每行选择唯一的列

标签 mysql distinct

我有下表:

'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。

如果我选择 DISTINCT by user_id,则不同日期的同一用户将不会被计算在内。 如果我选择“按日期区分”,则不同用户的同一天将不会被计算在内。

我希望报告能够计算每个日期的唯一 ID 的数量。然后总结一下这几天的情况。

最好的方法是什么?

最佳答案

您将必须使用Group By子句来获取每天的计数

Select user_id, `date`, count(*) As count
From loginTable
Group By user_id, `date`

然后在派生表中使用另一个分组依据来对每个用户进行求和。

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

关于mysql - 为每行选择唯一的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003884/

相关文章:

PHP:根据行的 ID 或日期保存行中的多个输入字段

mysql - Rails 没有在搜索表单上传递数据库查询

mysql - 在表中添加新列,其值取决于同一表中另一列的值

mysql - 查询以获取表中 2 个 ID 之间的唯一(最后一个时间线)连接

php - 复杂的 MySQL session 组查询?

带有一个 DISTINCT 字段的 MySQL SELECT 语句

mysql - 对不同的行进行分组并计算重复次数

sql - Postgresql 按多个列进行分组并在每个组内进行排序

MySql 删除具有重复列的行

php - 生成的 CSV 下载为空但有内容