mysql - 计算按用户分组的唯一天数

标签 mysql sql group-by sum

我有如下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          |

我希望它按用户分组。因此,对于表中的每个用户,我都想计算唯一的天数。

有人可以给我提示吗?

最佳答案

以这种方式编写条件允许使用索引...

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 在更正后删除了他们的答案)

关于mysql - 计算按用户分组的唯一天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38220941/

相关文章:

php - mysql 和 php 数组混合

MySql SELECT 通过拆分由 || 分隔的多个值

mysql - 当向表中输入一行时,如何检查另一个表的约束?

python - 按一列对数据进行分组,并从其他两列中选择第一次出现的情况

mysql - 对连接查询结果进行分组

java - Spring Data Autowiring 多个数据源失败

mysql - 如何删除多个表中的数据?

c# - 在 C# 中,GroupBy 是一个 List 属性

带有通配符和文字的 mysql boolean 模式全文搜索

sql - 更新与 SQL Server 中其他列对应的列