Sql 根据年龄选择男性和女性座位

Sql 根据年龄选择男性和女性座位,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我有一个乘客信息表,其中的列有预订id、性别id、乘客姓名和乘客年龄。我需要选择预订的成人座位(包括男性和女性),以及儿童座位(包括男性和女性) 性别识别表将24人定义为男性,25人定义为女性。为了区分儿童和成人座椅,我们使用乘客年龄,其中儿童的年龄不应超过11岁 我正试图写一个查询,以获取基于预订id的详细信息,但失败得很惨 有人能帮我解决这个问题吗?像这样的事情: select booking_id , sum(case when gender_id = 24 an

我有一个乘客信息表,其中的列有预订id、性别id、乘客姓名和乘客年龄。我需要选择预订的成人座位(包括男性和女性),以及儿童座位(包括男性和女性)

性别识别表将24人定义为男性,25人定义为女性。为了区分儿童和成人座椅,我们使用乘客年龄,其中儿童的年龄不应超过11岁

我正试图写一个查询,以获取基于预订id的详细信息,但失败得很惨

有人能帮我解决这个问题吗?

像这样的事情:

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

尝试使用分组方式和联合

    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

谢谢。。这就是我想做的。