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