0

列がのようなpassenger_informationテーブルがありますbooking_id, gender_id, passenger_name and passenger_age。予約した男性と女性の両方の大人の座席数と、男性と女性の両方のチャイルドシートの数を選択する必要があります。

このgender_id表では、24を男性、25を女性と定義しています。子供と大人の座席を区別するpassenger_ageために、子供の年齢が11歳を超えてはならない場所で使用します。

に基づいて詳細を取得するクエリを作成しようとしていますが、booking_id惨めに失敗します。

誰かがこれを手伝ってくれる?

4

2 に答える 2

0

このような何か:

select 
      booking_id
      , sum(case when gender_id = 24 and passenger_age > 11 then 1 else 0 end) adult_male
      , sum(case when gender_id = 25 and passenger_age > 11 then 1 else 0 end) adult_female
      , sum(case when gender_id = 24 and passenger_age <= 11 then 1 else 0 end) child_male
      , sum(case when gender_id = 24 and passenger_age <= 11 then 1 else 0 end) child_female
from passenger_information
group by booking_id
于 2012-07-30T11:49:55.720 に答える
0

Group byANDUNIONを使用してみてください。

    Select
    booking_id, 
    CASE gender_id WHEN 24 then 'Adult - Male'
    ELSE 'Adult - Female' END as 'Gender',
    count(booking_id)
FROM passenger_information
    WHERE passenger_age>11
    Group by booking_id,gender_id
UNION 
Select
    booking_id,  
    CASE gender_id WHEN 24 then 'Child - Male'
    ELSE 'Child - Female' END as 'Gender',
    count(booking_id)
FROM passenger_information
    WHERE passenger_age<=11
    Group by booking_id,gender_id
于 2012-07-30T12:03:58.557 に答える