次のような mysql テーブルを想像してください。
Interval
--------------------------
id INT, NOT NULL
start DATETIME, NOT NULL
finish DATETIME, NOT NULL
ある範囲の日の正午にまたがる間隔の数を生成する効率的なクエリが必要です。したがって、次のようなデータがあるとします。
id start finish
-------------------------------------------------
1 2013-01-12 08:00:00 2013-01-17 02:00:00
2 2013-01-12 15:00:00 2013-01-13 18:00:00
3 2013-01-13 08:00:00 2013-01-13 09:00:00
4 2013-01-14 11:00:00 2013-01-15 08:00:00
5 2013-01-14 02:00:00 2013-01-17 01:00:00
6 2013-01-15 20:00:00 2013-01-16 08:00:00
私はそれを実行し、次のような結果セットを受け取ることができました:
Timestamp Count
-----------------------------
2013-01-12 12:00:00 1
2013-01-13 12:00:00 2
2013-01-14 12:00:00 3
2013-01-15 12:00:00 2
2013-01-16 12:00:00 2
最小の開始と最大の終了を照会してから、これを行うことで、これを残酷に行うことができます。
SELECT count(id) FROM Interval
WHERE start <= @noon_timestamp AND finish >= @noon_timestamp
範囲内の毎日ですが、それは醜く恐ろしいようです。
それをより良くする方法はありますか?もしそうなら、SqlAlchemy の構文でそれを行うことができますか? :)