student表
-- ----------------------------
 id      name    sex    school
-- ----------------------------
('13', '张三', '男', '华南理工大学');
('14', '刘清', '女', '广东工业大学');
('15', '王八', '男', '中山大学');
('16', 'aaaa', '女', '华南理工大学');
('17', 'bbb', '男', '中山大学');
('18', 'ccc', '男', '广东工业大学');
('19', 'dd', '女', '中山大学');
('20', 'eee', '女', '华南理工大学');mysql查询语句如何实现按性别分组统计每个学校的人数,显示如下:
    学校   人数
---------------
男  学校1
   学校2
   学校3
        
女  学校1
    学校2
    学校3请高手指点下!谢谢  急。。

解决方案 »

  1.   

    写个SQL的行吗?不知MYSQL能否兼容?
      

  2.   


    select sex,school,count(*)
    from student
    group by sex,school
      

  3.   

    if object_id('tb') is not null drop table tb
    go
    create table tb(id  int,name varchar(10), sex varchar(10),school varchar(20))
    -- ---------------------------- 
    insert tb values('13', '张三', '男', '华南理工大学'); 
    insert tb values('14', '刘清', '女', '广东工业大学'); 
    insert tb values('15', '王八', '男', '中山大学'); 
    insert tb values('16', 'aaaa', '女', '华南理工大学'); 
    insert tb values('17', 'bbb', '男', '中山大学'); 
    insert tb values('18', 'ccc', '男', '广东工业大学'); 
    insert tb values('19', 'dd', '女', '中山大学'); 
    insert tb values('20', 'eee', '女', '华南理工大学'); 
    goselect sex 性别,school 学校,count(*) 人数
    from tb
    group by sex,school
    order by sex
    /*
    性别         学校                   人数
    ---------- -------------------- -----------
    男          广东工业大学               1
    男          华南理工大学               1
    男          中山大学                 2
    女          广东工业大学               1
    女          华南理工大学               2
    女          中山大学                 1(6 行受影响)
    */
      

  4.   

        学校  人数 
    --------------- 
    男  学校1 
      学校2 
      学校3 
            
    女  学校1 
        学校2 
        学校3 好像人数有差错啊?
    用SQL查询4楼做的是对的。
      

  5.   

    select sex as 性别,school 学校,count(*) 人数
    from tb
    group by sex,school
    order by sexorselect school as 学校,sum(if(sex='男',1,0)) as 男人数,
    sum(if(sex='女',1,0)) as 女人数
    from tb
    group by school