私のテーブルは次のようなものです。
+---------+---------+------------+-----------------------+---------------------+
| visitId | userId | locationId | comments | time |
+---------+---------+------------+-----------------------+---------------------+
| 1 | 3 | 12 | It's a good day here! | 2012-12-12 11:50:12 |
+---------+---------+------------+-----------------------+---------------------+
| 2 | 3 | 23 | very beautiful | 2012-12-12 12:50:12 |
+---------+---------+------------+-----------------------+---------------------+
| 3 | 3 | 52 | nice | 2012-12-12 13:50:12 |
+---------+---------+------------+-----------------------+---------------------+
訪問者の軌跡と訪問した場所に関するコメントを記録します。
特定の場所(たとえばid = 3227)を0:00から23:59までの間に、ある間隔(30分)に訪問した訪問者の数を数えたい
私はこれをしようとしていました:
SELECT COUNT(*) FROM visits
GROUP BY HOUR(time), SIGN( MINUTE(time) - 30 )// if they are in the same interval this will yield the same result
WHERE locationId=3227
問題は、ある間隔に該当するレコードがない場合、カウント0のその間隔を返さないことです。たとえば、02:00から03:00までその場所を訪問する訪問者がいない場合、これは私に02:00-02:29と02:30-2:59の間隔。
正確なサイズが48(30分ごとに1つ)の結果が必要ですが、どうすればよいですか?