oracle如何求占比 oracle占有率

如何在oracle里面实现占比统计的问题

where num=a

目前累计服务客户成百上千家,积累了丰富的产品开发及服务经验。以网站设计水平和技术实力,树立企业形象,为客户提供成都网站制作、做网站、网站策划、网页设计、网络营销、VI设计、网站改版、漏洞修补等服务。创新互联始终以务实、诚信为根本,不断创新和提高建站品质,通过对领先技术的掌握、对创意设计的研究、对客户形象的视觉传递、对应用系统的结合,为客户提供更好的一站式互联网解决方案,携手广大客户,共同发展进步。

这些数据可以直接算的

count(decode(num,a,你要加的字段,null))

oracle,求取一个比例

如果真有100个字段, 建议改表结构, 把100个字段作为100条子表数据.

假定子表cell_pb_table(cell_pb_id,cell_table_id,pb_value), cell_table的主键cell_table_id

SELECT A.TIME, A.CELL,A.PB_AVG,

SUM(CASE WHEN CELL_PB_TABLE.PB_VALUE 200 THEN 1 ELSE 0 END)/COUNT(1) AS HIT_RATE

FROM CELL_TABLE A LEFT JOIN CELL_PB_TABLE 

ON A.CELL_TABLE_ID = B.CELL_TABLE_ID

GROUP BY A.TIME,A.CELL,A.PB_AVG

真要行转列我没想到什么简单的SQL.

oracle 合计行占比如何计算?

不太理解你的想法,可以参考

SELECT  MD6_AT,MD7_AT,

RATIO_TO_REPORT(HJ) OVER(partition by MD6_AT) 占比

FROM (

SELECT MD6_AT,MD7_AT,SUM(dh_c_stylename) AS HJ 

FROM TABLE

GROUP BY MD6_AT,MD7_AT

)

oracle 求百分比

select sum(col2)/count(*) from

(select col1, case when col2=1 then 1 else 0 end col2 from test1) group by col1;

SQL select sum(col2)/count(*) from (select col1, case when col2=1 then 1 else 0 end col2 from test1) group by col1;

SUM(COL2)/COUNT(*)

------------------

.5

.75

-----------------------------------补充-----------------------------------

如果要加上百分比的,做些小处理即可

SQL select (sum(col2)*100/count(*))||'%' from

(select col1, case when col2=1 then 1 else 0 end col2 from test1) group by col1;

(SUM(COL2)*100/COUNT(*))||'%'

-----------------------------------------

50%

75%

oracle中如何求百分比?

实现代码:

ELECT(CASE WHEN db_psndoc.age=30 THEN '30岁以上'

WHEN db_psndoc.age30 THEN '30岁及以下' END)

ranges, COUNT(*) rs ,100*round(COUNT(*)/SUM(COUNT(*))

OVER(),4)||'%' percent FROM bd_psnd

GROUP BY CASE

WHEN bd_psndoc.age=30 then '30岁及以下'

WHEN db_psndoc.age=30 THEN '30岁以上'

END

扩展资料

sum(..) over(..)用法分析:

sum(…) over( ),对所有行求和;

sum(…) over( order by … ), 连续求和;

sum(…) over( partition by… ),同组内所行求和;

sum(…) over( partition by… order by … ),同第1点中的排序求和原理,只是范围限制在组内。

over不能单独使用,要和分析函数:rank(),dense_rank(),row_number(),sum()等一起使用。

over函数的参数:over(partition by columnname1 order by columnname2)

含义,按columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。

例子:

select deptno,ename,sal,

sum(sal) over (partition by deptno order by ename) 部门连续求和,--各部门的薪水"连续"求和

sum(sal) over (partition by deptno) 部门总和, -- 部门统计的总和,同一部门总和不变

oracle 查询度量下每一列占合计的比重

select company,period,item,A*100/sum(A) over() from tab a;

这个是每个占所有公司的占比,如果要针对每个公司的占比,可以如下;

select company,period,item,A*100/sum(A) over(partition by company) from tab a;


当前文章:oracle如何求占比 oracle占有率
文章起源:http://scyanting.com/article/hiisej.html