2013-05-15 40 views
0

所以我有一個查詢,它將計算過去3天內每個日期有多少記錄,從我上一個問題和其他人的幫助中我能夠得出以下結果:只計算某些字段是唯一的嗎? (多個GROUP BY)

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到分組依據):

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

但是這並沒有產生預期的結果。

+0

不知道你想獲得什麼。有多少用戶在過去3天內獲得了新的高分? –

+0

@MarcB對這個問題增加了一個解釋,對不起,如果不明確。 – Dan

+3

'GROUP BY'中COUNT(DISTINCT用戶名)'而不是'username'?還是不應該在其他日子呢? – Wrikken

回答

2

Wrikken

以下工作:

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

如果你想在'(日期)'上使用索引,你可以用'WHERE date> = CURDATE() - INTERVAL 3 DAY和日期

相關問題