users 表name                 gender salesid
-------------------- ------ -----------
张三                   女      1
李四                   男      2
王五                   女      3
赵六                   男      1
王八                   男      2
sales表id          name                 partid
----------- -------------------- --------------------
1           售A                   销售部
2           售B                   销售部
3           售C                   市场部统计各个部门的男女人数 显示如:
part                 男       女
-------------------- ------  -----
市场部                 0       1
销售部                 3       1
这个SQL怎么写好呢。。?

解决方案 »

  1.   

    select s.partid, sum(decode(gender,男,1,0)) as 男, sum(decode(gender,女,1,0)) as 女
    from users u, sales s
    where u.salesid = s.id
    group by s.partid
      

  2.   

    create table users (name varchar2(10),gender varchar2(10),salesid int);
    create table sales(id int,name varchar2(10),partid varchar2(10));
    insert into users values('张三','女',1);
    insert into users values('李四','男',2);
    insert into users values('王五','女',3);
    insert into users values('赵六','男',1);
    insert into users values('王八','男',2);
    insert into sales values(1,'售A','销售部');
    insert into sales values(2,'售B','销售部');
    insert into sales values(3,'售C','市场部');
    commit;select partid,
           sum(decode(gender, '男', 1, 0)) 男,
           sum(decode(gender, '女', 1, 0)) 女
      from (select u.gender, s.name, s.partid
              from users u, sales s
             where u.salesid = s.id)
     group by partid;
      

  3.   


    类似这样的功能都可以试试decode方法