当前位置: 代码迷 >> Oracle管理 >> 基础SQL解决办法
  详细解决方案

基础SQL解决办法

热度:12   发布时间:2016-04-24 05:59:12.0
基础SQL
ID 名称 数量
--------------------
1 1 10
2 1 23
3 2 15
4 3 16
5 4 18
6 2 20
7 1 45
8 3 20
9 4 21
---------------------
1.查询名称为1的总数量与所有总数量的百分比(一条Sql语句)
2.查询各个名称的总数量与所有总数量的百分比(一条Sql语句)

------解决方案--------------------
你的数据我看得不是很明白,给你举个例子~~

表tt:

ID NAME QUANTITY
---------- ---- ----------
1 aa 20
2 aa 30
3 aa 20
4 bb 50
5 bb 80
6 aa 10
7 cc 20
8 aa 60


1.查询name为aa的总数量与所有总数量的百分比(一条Sql语句)

=======================sql=================================

select *
from (
select tt.name,
round(RATIO_TO_REPORT(sum(tt.quantity)) over() * 100,2) || '% ' as percent
from tt
group by tt.name
)zz
where zz.name = 'aa ';


======================result===============================

NAME PERCENT
---- -----------------------------------------
aa 48.28%


2.查询各个name的总数量与所有总数量的百分比(一条Sql语句)

=======================sql=================================

select tt.name,
round(RATIO_TO_REPORT(sum(tt.quantity)) over() * 100,2) || '% ' as percent
from tt
group by tt.name;


======================result===============================

NAME PERCENT
---- -----------------------------------------
aa 48.28%
bb 44.83%
cc 6.9%
  相关解决方案