在我的SQL Server 2008中,我得到了一個表,其中存儲了每個用戶的操作的datetime
。它看起來像這樣:SQL Server:按用戶和日期計算分組
id | username | action | actionDate
------------------------------------
1 | bob | add | 2015-08-15 11:20:12
2 | bob | add | 2015-08-15 11:21:52
3 | sandra | add | 2015-08-15 11:25:32
4 | sandra | add | 2015-08-15 11:26:32
5 | bob | add | 2015-08-15 11:31:52
6 | sandra | add | 2015-08-16 13:46:32
7 | sandra | add | 2015-08-16 13:26:32
8 | bob | add | 2015-08-16 13:31:52
9 | sandra | add | 2015-08-16 13:46:32
這張表比較大,並且存儲了很多天的數據。所以我需要知道每個用戶每天做多少次「添加」操作。例如: -
actionDate | username | countRow
2015-08-15 | bob | 3
2015-08-15 | sandra | 2
2015-08-16 | bob | 2
2015-08-16 | sandra | 3
我已經嘗試了很多不同的查詢,但我仍然不能得到它。我認爲最接近的查詢是這樣的:
SELECT S.username, S.actionDate, C.countRow
From dbo.actionTable S
INNER JOIN(SELECT Convert(date, actionDate),count(username) as countRow
FROM dbo.actionTable
WHERE action = 'add'
GROUP BY Convert(date, actionDate)) C ON S.actionDate = C.actionDate
但這個查詢返回的錯誤數據太多了。請告訴我我錯在哪裏。
酷!爲我工作!很簡單...非常感謝! –
對此查詢有更多問題。 actionTable有更多cols - 28.只有一些人有索引。不會計數(*)會很慢嗎?有沒有可能不是所有的cols? –
沒有問題。計數(*)只會計算行數。您可以使用count(1)或count(oneColumn)或count(*)。它只會做同樣的事情。 –