EVENT
--+-------------------------+----------------+
id| EVT| start_date | end_date
--+-------------------------+-----------------+
0 |AAAA| 2013-06-01 10:00 | 2013-06-01 14:00|
--+-------------------------+-----------------+
1 |BBBB| 2013-06-01 12:00 | 2013-04-01 18:00|
--+-------------------------+-----------------+
2 |CCCC| 2013-06-02 10:00 | 2013-06-05 12:00|
--+-------------------------+-----------------+
3 |DDDD| 2013-06-02 13:00 | 2013-06-05 18:00|
--+-------------------------+-----------------+
4 |EEEE| 2013-06-02 14:30 | 2013-06-05 17:00|
↑こんな感じでイベントを管理するテーブルがあります。
イベントの開催時間の重複を加味して何らかのイベントのある
連続した時間帯のみ取り出すSQLを書きたいのですが、
いい案はありますでしょうか?
結果的には以下の様な情報が取り出したいです。
2013-06-01 10:00 - 18:00
2013-06-02 10:00 - 12:00
2013-06-02 13:00 - 18:00
ID 0と1は連続してるので 10:00 - 18:00
ID 2はどれとも連続してないので 10:00 - 12:00
ID 4はID3の中にあるので無視
No.1ベストアンサー
- 回答日時:
記載のデータって正しいですか?
このデータだとID:2~4が連続することになると思うのですが。
正しいデータが不明なので、期待どおりの結果が取れるか分かりませんが、
select min(START_DATE) START_DATE, max(END_DATE) END_DATE
from(
select ID, START_DATE, END_DATE, sum(TERM_START) over(order by START_DATE, END_DATE) TERM_ID
from (
select ID, START_DATE, END_DATE, case when START_DATE >= LAG(END_DATE, 1) OVER(ORDER BY START_DATE, END_DATE) THEN 1 else 0 end TERM_START
from EVENT
)
)
group by TERM_ID
order by START_DATE, END_DATE;
こんな感じでどうでしょうか。
大変申し訳ありませんでした。 m(_ _)m
確かにデータが間違いでした。
申し訳ございません。
EVENT
--+-------------------------+----------------+
id| EVT| start_date | end_date
--+-------------------------+-----------------+
0 |AAAA| 2013-06-01 10:00 | 2013-06-01 14:00|
--+-------------------------+-----------------+
1 |BBBB| 2013-06-01 12:00 | 2013-04-01 18:00|
--+-------------------------+-----------------+
2 |CCCC| 2013-06-02 10:00 | 2013-06-02 12:00|
--+-------------------------+-----------------+
3 |DDDD| 2013-06-02 13:00 | 2013-06-02 18:00|
--+-------------------------+-----------------+
4 |EEEE| 2013-06-02 14:30 | 2013-06-02 17:00|
--+-------------------------+-----------------+
yamada_g 様 ありがとうございました。
流した結果、正確に出力できました。
勉強が足りないと,痛感している次第です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- その他(データベース) accessについて 2 2022/05/31 16:58
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- その他(セキュリティ) システムのセキュリティに詳しい方〜 飛行機のチケット使わなかったときのチケット費用補償保険/旅行キャ 1 2022/04/06 09:49
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- MySQL 2つのカラムでgroup by の動作をさせるSQLの構文を教えてください。 3 2022/05/19 19:02
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORACLEで一番最初の結果だけを...
-
PL/SQL 複数件同じ値で更新す...
-
Oracleのビュー作成時に「指定...
-
抽出結果を1件ずつ次の抽出条件...
-
WITH句で複数テーブルを定義す...
-
Oracle SQLにて固定長でデータ...
-
SQL文の書き方
-
ROWNUMについて
-
時間の重複を加味した連続時間S...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
アクセスクエリの計算
-
「直需」の意味を教えてください
-
Oracle 2つのDate型の値の差を...
-
Access テキスト型に対する指定...
-
Accessでテーブル名やクエリ名...
-
Accessクエリでの、LIKE条件
-
作番ってどういう意味でしょうか?
-
エクセルグラフの凡例スペース
-
FROM の中で CASE を使えるでし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORACLEで一番最初の結果だけを...
-
Oracleのビュー作成時に「指定...
-
Oracle SQLにて固定長でデータ...
-
ROWNUMについて
-
DB2でREPLACEによる文字列の置換
-
ある値以上の空き番の最小値を...
-
distinct で抽出したレコード件数
-
抽出結果を1件ずつ次の抽出条件...
-
WITH句で複数テーブルを定義す...
-
sqlplusで日本語入力
-
VBAのRows.Selectについて
-
group by でselect
-
時間の重複を加味した連続時間S...
-
sqlの条件文に関して
-
PL/SQL 複数件同じ値で更新す...
-
重複
-
動的SQLでのDECODE
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
エクセルVBAで5行目からオート...
おすすめ情報