日期:2014-05-17  浏览次数:20807 次

求一sql语句,谢谢!!!!!!有分!!!!!!!!
编号           姓名           性别                 系别
1                 aa                 男                     计
2                 bb                 女                     数
3                 cc                 男                     计
4                 dd                 男                     数  
   

结果

系别         男生总数         女生总数             所有总数
计                 2                         0                           2
数                 1                         1                           2    

请问CSDN上的达人们,怎么样写sql语句才能出现结果表中的数据呢??

------解决方案--------------------
顶一下
------解决方案--------------------

select 系别,sum(case when 性别 = '男 ' then 1 else 0 end ) as 男,
sum(case when 性别 = '女 ' then 1 else 0 end )as 女,count(*) as 所有总数
from
(
select 'aa ' as 姓名, '男 ' as 性别, '计 ' as 系别 from dual
union
select 'bb ' , '女 ' , '数 ' from dual
union
select 'cc ' , '男 ' , '计 ' from dual
union
select 'dd ' , '男 ' , '数 ' from dual
)
group by 系别
------解决方案--------------------
select t.xb,t.mencount,v.womencount,t.mencount+v.womencount from
(select xb,count(1) as mencount from table where sex= '男 ' group by xb ) t
(select xb,count(1) as womencount from table where sex= '女 ' group by xb ) v
where t.xb=v.xb
------解决方案--------------------
SELECT 系别,
SUM(CASE WHEN 性别= '男 ' THEN 1 ELSE 0 END) AS 男生总数,
SUM(CASE WHEN 性别= '女 ' THEN 1 ELSE 0 END) AS 女生总数,
COUNT(*) AS 所有总数
FROM table
GROUP BY 系别

------解决方案--------------------
select 系别,sum(decode(sex, '男 ',1,0)),sum(decode(sex, '女 ',1,0)),count(*)
from talbe
group by 系别