如何計算統計值 的百分比呢?
uj5u.com熱心網友回復:
"STATUS","SHULIANG""V","41"
"C","699"
"D","19"
"J","172"
比如我想計算數量這一列占所有數量的百分比,41/sum(shuliang), sql 怎么寫啊,老報錯啊,求大牛
uj5u.com熱心網友回復:
不是吧,你把資料貼出來瞅瞅uj5u.com熱心網友回復:
樓上就是資料啊
uj5u.com熱心網友回復:
select ratio_to_report(SHULIANG) over () zb ,t.* from t
uj5u.com熱心網友回復:
我是想問標準sql 怎么寫?uj5u.com熱心網友回復:
41/sum(shuliang) over() ?uj5u.com熱心網友回復:
應該sum()over()能搞uj5u.com熱心網友回復:
可以用 sum() over() ,也可以使用一個子查詢計算出這個總計。uj5u.com熱心網友回復:
請問標準sql 有over函式么?能否用標準sql 解決這個問題,子查詢么?
uj5u.com熱心網友回復:
select STATUS ,SHULIANG,41/sum(shuliang) over() from 表uj5u.com熱心網友回復:
select t.*, t.SHULIANG / (select sum(SHULIANG) from t) from t;select t.*, t.SHULIANG / t2.su from t, (select sum(SHULIANG) su from t) t2;
標準sql不清楚,不過這兩種寫法應該很通用。
uj5u.com熱心網友回復:
SQL>
SQL> create table test(s varchar(10), v int);
Table created
SQL> begin
2 insert into test values('V','41');
3 insert into test values('C','699');
4 insert into test values('D','19');
5 insert into test values('J','172');
6 end;
7 /
PL/SQL procedure successfully completed
SQL> col v format a10;
SQL> -- 大資料量下,方法二有優勢
SQL> select s, v, v * 1.0 / sum(v) over() V1 from test;
S V V1
---------- ---------- ----------
V 41 0.04403866
C 699 0.75080558
D 19 0.02040816
J 172 0.18474758
SQL> select s, v, v * 1.0 / (select sum(v) from test) V2 from test;
S V V2
---------- ---------- ----------
V 41 0.04403866
C 699 0.75080558
D 19 0.02040816
J 172 0.18474758
SQL> drop table test purge;
Table dropped
SQL>
uj5u.com熱心網友回復:
sum不就行了?uj5u.com熱心網友回復:
select a,(b / (select sum(b) from t)) from tuj5u.com熱心網友回復:
資料在哪里啊,我看不到uj5u.com熱心網友回復:
先看下再說,不過應該是不錯的uj5u.com熱心網友回復:
直接執行這個WITH T AS (
SELECT 'V' STATUS,41 SHULIANG FROM DUAL UNION ALL
SELECT 'C' STATUS,699 SHULIANG FROM DUAL UNION ALL
SELECT 'D' STATUS,19 SHULIANG FROM DUAL UNION ALL
SELECT 'J' STATUS,172 SHULIANG FROM DUAL)
SELECT T.*,SHULIANG/SUM(SHULIANG) OVER(ORDER BY 1 )*100 "百分百(實際值)",
ROUND(SHULIANG/SUM(SHULIANG) OVER(ORDER BY 1 )*100,2) "百分百(保留兩位小數)" FROM T ;
uj5u.com熱心網友回復:
這個就是最簡單的
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/29771.html
標籤:開發
上一篇:oracle存盤程序想實作一個時間區間內進行多次計算得到值
下一篇:Oracle多次分組問題
