这个sql语句这么写表stsnosnamesex001jon1002hat1003ww2004qw1...(1表示男,2表示女)性别人数1m2nm+n怎么表
这个sql语句这么写
表st
sno sname sex
001 jon 1
002 hat 1
003 ww 2
004 qw 1
.
.
.
(1表示男,2表示女)
性别 人数
1 m
2 n
m+n
怎么表示下面这张表
[解决办法]
select sex as 性别, count(*) as 人数 from st group by rollup(sex);
[解决办法]
按性别分组
然后再rollup作个统计啊
sys@ORCL> create table st (sno number,sname varchar2(10),sex number);
Table created.
sys@ORCL> insert into st values(001,'aa',1);
1 row created.
sys@ORCL> insert into st values(002,'bb',1);
1 row created.
sys@ORCL> insert into st values(003,'cc',2);
1 row created.
sys@ORCL> insert into st values(004,'dd',1);
1 row created.
sys@ORCL> commit;
Commit complete.
sys@ORCL> select * from st;
SNO SNAME SEX
---------- ---------- ----------
1 aa 1
2 bb 1
3 cc 2
4 dd 1
sys@ORCL> select sex,count(sex) from st group by rollup(sex);
SEX COUNT(SEX)
---------- ----------
1 3
2 1
4
[解决办法]
select decode(sex,1,'男','2','女') 性别, count(*) as 人数 from st group by rollup(sex);
[解决办法]
case..when
或
decode都行
比如:decode(sex,1,"男",2,"女")
------解决方案--------------------
select case sex
when '1' then '男'
when '2' then '女'
end
AS 性别,COUNT(*) as 人数
from st
GROUP BY ROLLUP(SEX)
[解决办法]
group by rollup(columnList)会按照the first n,n-1,n-2.....0共n+1中情况分组,进行小计求和.
decode(column,v1,v11
,v2,v22
,v3 v33
,default)
或者case [expression] when [expression] then[expression]
when [expression] then[expression]
when [expression] then[expression]
else default
end;
都有 if else的功能。
