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

一个优化SQL语句的请教
在一个student表中,有sno学号,sname姓名,ssex性别,sdept专业。
使用select count(*) aa, ssex from student group by ssex后得出一下结果
  aa ssex
--------------
  1 男
  3 女
要把行列颠倒一下,更符合表格输出的格式,可以使用以下语句。
select s1.aa as 男, s2.aa as 女
from (
select count(*) aa, ssex from student group by ssex
) s1,
(
select count(*) aa, ssex from student group by ssex
) s2
where s1.ssex = '男' and s2.ssex = '女'
  男 女
--------------
  1 3

不过应该有方法可以写出更漂亮的SQL,请教大家一下啦。



------解决方案--------------------
你这个效率不行啊
select sum(decode(ssex,'男',1,0)) 男,
sum(decode(ssex,'女',1,0)) 女
from student