使用子查询计算每个患者就诊的次数,然后使用案例对不同列求和:
select
sex,
sum(visits = 1) single_visit,
sum(visits > 1) subsequent
from (select p.sex, count(*) as visits
from pacient p
join consulting c on p.id=c.id_pacient
group by c.id_pacient) x
在mysql中,您可以使用
sum(condition)
计算它是真的次数,因为真是1,假是0。
要确保在输出中表示两种性别,请使用包含两种性别值的行集的左联接:
select
s.sex,
sum(visits = 1) single_visit,
sum(visits > 1) subsequent
from (select 'm' sex union select 'f') s
left join (select p.sex, count(*) as visits
from pacient p
join consulting c on p.id=c.id_pacient
group by c.id_pacient) v
on v.sex = s.sex