现有如下两个表
表一
ztid    name
01    男
02    女
表二
id   lxname       ztid
01   张三           01
02   李四           01
03   王五           01
04   小红           02
05   小英           02
想得到如下结果
男性人数   女性人数     总人数
3           2         5
请问sql语句怎么写

解决方案 »

  1.   

    select sum(r1) 男性人数,sum(r2) 女性人数,sum(r1+r2) 总人数
    from(
    select decode(name,'男',rnum,0) r1,decode(name,'女',rnum,0) r2
    from(
    select name,count(1) rnum
    from t1 join t2
    on (t1.ztid=t2.ztid)
    group by name))
      

  2.   

    select * from (select count(*)   from student a, sex b where a.ztid=b.ztid and b.sex='男'),
                  (select count(*)   from student a, sex b where a.ztid=b.ztid and b.sex='女'),
                  (select count(*)   from student a, sex b where a.ztid=b.ztid)             
      

  3.   

    select
    sum(decode(ztid,'01',1,0)) 男性人数,
    sum(decode(ztid,'02',1,0)) 女性人数,
    count(*) 总人数
    from 表2
      

  4.   

    如果是报表的话,可以用数列的,直接group by省事,免了后期维护