Mysql 仅在某些字段唯一的情况下计数?(多组BY)

Mysql 仅在某些字段唯一的情况下计数?(多组BY),mysql,sql,pdo,Mysql,Sql,Pdo,因此,我有一个查询,它将计算过去3天中每个日期的记录数,从我的上一个问题开始,在其他人的帮助下,我能够得出以下结论: SELECT COUNT(*) AS dailyCount FROM highscores WHERE DATE(date) BETWEEN CURDATE() - INTERVAL 3 DAY AND CURDATE() GROUP BY DATE(date) 查询将执行以下操作:在过去30天内,它将获取每个单独的一天中有多少条记录,这些记录将作为dailyCount返回 然

因此,我有一个查询,它将计算过去3天中每个日期的记录数,从我的上一个问题开始,在其他人的帮助下,我能够得出以下结论:

SELECT COUNT(*) AS dailyCount
FROM highscores
WHERE DATE(date) BETWEEN CURDATE() - INTERVAL 3 DAY AND CURDATE()
GROUP BY DATE(date)
查询将执行以下操作:在过去30天内,它将获取每个单独的一天中有多少条记录,这些记录将作为
dailyCount
返回

然而,我现在想做的是得到它,这样
dailyCount
将只计算
username
以前未计算过的字段

我尝试了以下操作(将
username
添加到组BY):

然而,这并没有给出预期的结果。

归功于

以下方面发挥了作用:

SELECT COUNT(DISTINCT username) AS dailyCount
FROM highscores
WHERE DATE(date) BETWEEN CURDATE() - INTERVAL 3 DAY AND CURDATE()
GROUP BY DATE(date)

我不知道你想说什么。在过去3天内,有多少用户获得了新的高分?@MarcB为问题添加了一个解释,如果不清楚,很抱歉。
COUNT(DISTINCT username)
而不是
GROUP BY
中的
username
?或者它在其他日子里也不算吗?@Wrikken,我相信,谢谢。如果您希望它在
(日期)
上使用索引,您可以将
WHERE
条件替换为
WHERE date>=CURDATE()-INTERVAL 3天和dateSELECT COUNT(DISTINCT username) AS dailyCount
FROM highscores
WHERE DATE(date) BETWEEN CURDATE() - INTERVAL 3 DAY AND CURDATE()
GROUP BY DATE(date)