1

当我想选择带有 2 个字段的查询并且该字段是唯一 id 时遇到问题,然后我尝试创建这样的表

created_at             user_id 
2013-01-05             1
2013-01-20             1
2013-01-23             2
2013-01-28             1
2013-02-01             3
2013-02-04             2

看起来任何 user_id 都不是唯一的,created_at 也不是唯一的,所以我创建了像这段代码一样的查询选择

SELECT MONTH( created_at ) AS month 
     , count( user_id ) AS total 
FROM applies where YEAR(created_at) = 2013 
GROUP BY month

这是结果

month             total
1                 4
2                 2

在 1 月 (1) 月份,实际上我有 3 个用户,但仍然显示 4 个用户,因为计数不是唯一的user_id ,我如何才能将其过滤user_id为唯一?

4

1 回答 1

2

不计算重复user_id使用DISTINCT关键字:

SELECT MONTH(created_at) AS Month
      ,COUNT(DISTINCT User_id) AS Total
FROM Table1
GROUP BY MONTH(created_at)

结果:

| MONTH | TOTAL |
-----------------
|     1 |     2 |
|     2 |     2 |

看到这个 SQLFiddle

于 2013-04-29T10:20:59.343 回答