1、
select * from (
select BJMC,count(XM) as BJRS from T_JBXX group by BJMC
) t
where BJRS>30
2、
select * from (
select t1.BJMC,
sum(case when t2.XBMC='男生' then 1 else 0 end ) as boy,
sum(case when t2.XBMC='女生' then 1 else 0 end ) as girl,
sum(1) total
from T_JBXX t1
left join T_XB t2
on t1.XBDM=t2.XBDM and t2.XBMC in('男生','女生')
group by t1.BJMC
)t
第二题如果只有男女的话,其实没那么复杂,之所也这么写是考虑到可能存在人妖或者其他异类,所以还是严谨点。
select BJMC from T_JBXX GROUP BY YXMC HAVING COUNT(*) > 30;