在一个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 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
恩,是可以直接从原表中抓取。谢谢了。
但是如果情况更复杂一些呢?
已知的是
姓名 性别 成绩
--------------------
张三 男 95
李四 女 75
马超 男 99
关羽 男 99那算男女总分也可以用decode的吗?
sum(decode(性别,'女',成绩,0)) 女
from student
when sex = '男' then
'男'
end) 男,
count(case
when sex = '女' then
'女'
end) 女
from student