当前位置: 代码迷 >> Oracle管理 >> 这个sql话语这么写
  详细解决方案

这个sql话语这么写

热度:87   发布时间:2016-04-24 04:58:52.0
这个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

怎么表示下面这张表
------最佳解决方案--------------------
按性别分组
然后再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 sex as 性别, count(*) as 人数 from st group by rollup(sex);
------其他解决方案--------------------
select sex, sum(decode(sex, '1', 1, '2', 1)) from st
------其他解决方案--------------------
如果不行,,,说说。。。我没有试。
please call me Rayn
my QQ is 412552703
------其他解决方案--------------------
group by rollup() 对每组数据进行合计 
------其他解决方案--------------------
学习了,之前只用group by,原来还有group by rollup。
------其他解决方案--------------------
  相关解决方案