2010年2月10日 星期三

GROUP BY "half an hour" in MySQL

今天忽然有這需求, google 了 "group by half hour" 還真的有人問一樣的問題, 不過沒啥好解答。自己試出還過得去的解法, 就順手記一下吧。

假設表格 record 有個欄位 created_time, 型別為 timestamp。若要統計 2010-02-10 一整天每半小時產生的的資料量, SQL 可以這麼寫:
SELECT HOUR(created_time) AS h, FLOOR(MINUTE(created_time) / 30) AS v, COUNT(*) FROM record WHERE AND created_time >= '2010-02-10' AND created_time < FROM_DAYS(TO_DAYS('2010-02-10') + 1) GROUP BY h, v;
MySQL 有許多計算時間的函式, 像 hour 會取出小時, 但沒有取出半小時或「每十分鐘」的函式。但可以自己用分鐘除以 30, 再套 FLOOR (下界) 將時間轉為 0, 1。

沒有留言:

張貼留言

在 Fedora 下裝 id-utils

Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...