0
我擁有大量數據,並且想要統計某個列的出現次數。造成混淆的原因是,它不僅僅是找到相同的列值,而只是其中的一部分。SQL Server:查找已轉換數據的子字符串出現次數
我的表包含在(YYYY-MM-DD HH:MM:SS)的格式時間戳,我想申請這個SQL命令只對YYYY-MM-DD部分和計數的數量基於此的每個事件的發生。例如,如果我的數據如下:
ID|TimeStamp
--+--------------------
00|2017-08-31 09:00:00
01|2017-08-31 11:00:00
02|2017-08-31 16:30:00
03|2017-08-31 22:00:00
04|2017-09-01 09:00:00
05|2017-09-01 23:40:00
06|2017-09-02 10:30:00
07|2017-09-02 13:00:00
08|2017-09-02 23:00:00
那麼我希望我的SQL命令的輸出類似
TimeStamp | Occurrences
-----------+------------
2017-08-31 | 4
2017-09-01 | 2
2017-09-02 | 3
我一直想從我有這麼遠,但我還沒有到達那裏沒有運氣。
我有這樣的SQL:
SELECT
TimeStamp, COUNT(*)
FROM
myTableName
GROUP BY
TimeStamp
ORDER BY
COUNT(*) DESC -- to sort the occurrence count
但這僅數完全相同的時間戳,所以這不會是我希望它輸出的輸出。我也在考慮TimeStamp具有DateTime類型,所以我必須先將其轉換爲varchar或其他東西,然後獲取它的子字符串。
我試過timestamp數據類型轉換爲varchar,然後獲取字符串的第10個字母,所以
SELECT
COUNT(*) TimeStamp
FROM
myTableName
GROUP BY
(SELECT LEFT(CONVERT(Varchar, TimeStamp, 120), 10))
ORDER BY COUNT(*) DESC
但這會導致一個錯誤:
Error: Cannot use an aggregate or a subquery in an expression used for the group by list of a GROUP BY clause
能有人幫我和這個?謝謝。