0

データベースの説明は次のとおりです。

会社(ID_comp、名前)

Trip(trip_no, id_comp, plane, town_from, town_to, time_out, time_in)

乗客(ID_psg、名前)

Pass_in_trip(旅行番号、日付、ID_psg、場所)

  • Company テーブルには、乗客を輸送する会社の ID と名前があります。
  • Trip テーブルには、旅行に関する情報 (旅行番号、会社 ID、飛行機の種類、出発都市、到着都市、出発時刻、および到着時刻) があります。
  • 乗客テーブルには、乗客の ID と乗客の名前があります。
  • Pass_in_trip テーブルには、フライトに関する情報があります: トリップ番号、出発日 (日)、乗客の ID、およびフライト中の場所。

注意すべきは、

  • どんな旅行も毎日行われています。フライトの所要時間が暦日 (24 時間) 未満である。
  • 時刻と日付は比較的 1 つのタイム ゾーンと見なされます。
  • 出発時間と到着時間が1分以内に表示されます。
  • 同じ名前の乗客がいる場合があります (たとえば、ブルース・ウィリス)。
  • 飛行中の場所は、数字の後に文字が続きます。数字は行番号を定義し、文字 (a - d) - 行の位置 (左から右へ) をアルファベット順に示します。
  • 関係と制限は、データ スキーマに示されています。

質問は次のとおりです。

同じ座席で複数回飛行したさまざまな乗客の名前を見つけます。

私はこのクエリを試しました

select name  from (
select id_psg, count(name) as total from (
select a.id_psg, name, date,place from passenger a join
pass_in_trip b on a.id_psg=b.id_psg order by a.id_psg, place
) as t1
group by t1.id_psg
) as a join passenger b on a.id_psg = b.id_psg 
join pass_in_trip c on a.id_psg=c.id_psg
where total > 1
group by name,place
having count(place) >=2 
order by name,place;

しかし、それは言います:

Wrong
Your query produced correct result set on main database, but it failed test on second, checking database
* Wrong number of records (more by 8)
4

3 に答える 3

0
select name, place, COUNT(name)as "no of trips" 
from Passenger p 
join Pass_in_trip pt
    on p.ID_psg=pt.ID_psg join Trip t
    on pt.trip_no=t.trip_no
group by name, place
having count(name) > 1  
于 2015-04-21T06:13:30.940 に答える