档案表(编号,性别,政治面貌,年龄)
    1  男  党员   25
    2  女  团员   20
    3  男  党员   40
    4  男  群众   35
    5  女  党员   28要求按这个政治面貌分组统计
       政治面貌 男 女 总人数 平均年龄请问各位一条SQL语句能实现吗?

解决方案 »

  1.   

    SQL Server 的:SELECT 政治面貌,
           COUNT(CASE WHEN 性别=男 THEN 1 END) 男,
           COUNT(CASE WHEN 性别=女 THEN 1 END) 女,
           COUNT(编号) 总人数,
           AVG(年龄) 平均年龄
    FROM 档案表//如果是Access用SELECT嵌套一下
      

  2.   

    我是这样写的 select 政治面貌 ,count(*) as 总人数,count(select count(*) as boy from 人事档案 where [性别]='男') as 男,count(select count(*) as girl from 人事档案 where [性别]='女') as 女,avg(年龄) as 平均年龄 from 人事档案 group by 政治面貌 
    但是每行记录的男,女人数都是总共的男女人数,不是对应相关记录的男女人数,请问怎么写?有人吗?
      

  3.   

    SELECT a.what as 政治面貌,count(*) as 总人数,(select count(*) from info b where sex='男' and b.what=a.what) as 男,(select count(*) from info b where sex='女' and b.what=a.what) as 女,avg(a.old) as 平均年龄
    FROM info a group by What;
      

  4.   

    SELECT 政治面貌,
           性别,
           COUNT(编号) 总人数,
           AVG(年龄) 平均年龄
    FROM 档案表
    GROUP BY 政治面貌,性别
      

  5.   

    babys de hen jian jie!!
      

  6.   

    SELECT 政治面貌,
           COUNT(CASE WHEN 性别='男' THEN 1 END) 男,
           COUNT(CASE WHEN 性别='女' THEN 1 END) 女,
           COUNT(编号) 总人数,
           AVG(年龄) 平均年龄
    FROM 档案表 group by 政治面貌
      

  7.   

    SELECT 政治面貌,
           SUM(CASE WHEN 性别='男' THEN 1 ELSE 0 END) 男,
           SUM(CASE WHEN 性别='女' THEN 1 ELSE 0 END) 女,
           COUNT(编号) 总人数,
           AVG(年龄) 平均年龄
    FROM 档案表 group by 政治面貌