1

「M109」と言う人の休日テーブルがあります。特定の日付で、彼は 1 時間の昼食と 4 時間の会議のために休暇を取った。

例えば。

  • 午前 11 時~午後 3 時 - ミーティング
  • 正午から午後 1 時 - 昼食。

ここで、この 1 時間のランチのタプルを非表示にして、ミーティングのタプルのみを取得する必要があります。どうやってやるの ?

table(Person(varchar), StartTime, EndTime, Date, Desciption)スキーマです。

これまでの私のクエリ:

select "Provider", sum(b."EndTime" - b."StartTime")/60 as Non
from VACATION b
where b."StartDate" = '18-FEB-13'
and b."StartTime" IN (select p."StartTime"
                      from axium.VACATION p
                      where Exists (select q."StartTime"
                                    from axium.VACATION q
                                    where p."Provider" = q."Provider"
                                    and q."StartTime" <> p."StartTime"
                                    and q."StartTime" between p."StartTime"
                                                      and p."EndTime"
                                   )
                     )
and b."Provider" = 'M1009'
group by b."Provider"
order by b."Provider";
4

1 に答える 1

0

where句と相関サブクエリを使用してこれを行うことができます。

select *
from t
where not exists (select 1 from t t2 where t2.person = t.person and t2.starttime < t.starttime and t2.endtime > t.endtime)
于 2013-02-19T21:30:28.817 に答える