1
各レコードにインジケータと範囲があるテーブルがあり、各インジケータの範囲によってカバーされる合計の広がりを知りたいが、ある指標。複数の範囲でカバーされた合計スプレッドを計算する
私は言葉が続くのがわかりませんが、概念はかなりシンプルです。具体的な例を示します。
CREATE TABLE records(id int, spread int4range);
INSERT INTO records VALUES
(1, int4range(1, 4)),
(1, int4range(2, 7)),
(1, int4range(11, 15)),
(2, int4range(3, 5)),
(2, int4range(6, 10));
SELECT * FROM records;
出力収量:
id | spread
----+---------
1 | [1,4)
1 | [2,7)
1 | [11,15)
2 | [3,5)
2 | [6,10)
(5 rows)
を私なりになりました次のような出力できますようなクエリ:
id | total
---+--------
1 | 10
2 | 6
番号10および6から来たのか? ID1の範囲は1,2,3,4,5,6,11,12,13、および14です。合計10の異なる整数。 ID 2については、3、4、6、7、8、および9を含む範囲があります。合計6つの異なる整数。
問題を理解するのに役立つ場合は、「これらの記録がカレンダーの会議の日時範囲を表している場合、毎日の合計時間数はどこに予約されていますか少なくとも一回?"
重要な場合は、Postgresのバージョンが9.4.8です。
ハハ、答えはとても簡単なことが分かります。あなたの心が詰まっているのは面白いです。私は本当に組合(離散した範囲を扱う)をとり、それらの境界を見ているはるかに複雑なプロセスに固執しました。あなたの助けに感謝します。 –