关于零售业中的二八sql统计

零售业里的,20%商品,产生80%的销售,就是要查出是哪些商品的贡献度最大。
如图:
我如何取每类商品中按销售额降序排列后,依次累加直到累计值>=0.8*sum(销售额)的前几种商品的销售额明细。

sql:
-- Create table
create table TAB_1
(
COD VARCHAR2(10),
REC NUMBER(8,4)
);
insert into TAB_1 (COD, REC)
values ('A', 500);
insert into TAB_1 (COD, REC)
values ('B', 600);
insert into TAB_1 (COD, REC)
values ('C', 200);
insert into TAB_1 (COD, REC)
values ('D', 223);
insert into TAB_1 (COD, REC)
values ('D', 30);
insert into TAB_1 (COD, REC)
values ('A', 55);
insert into TAB_1 (COD, REC)
values ('A', 3);
commit;

elect m.R1, m.Cod, m.Rec1, n.Rec1 需要查询的数量, n.Cod 需要查询的代码
From (Select Cod, Rec1, Rownum R1
From (Select Cod, Rec1
From (Select Cod, Sum(Rec) Rec1 From Tab_1 a Group By Cod)
Order By Rec1)) m,
(Select Cod, Rec1, Rownum R2
From (Select Cod, Rec1
From (Select Cod, Sum(Rec) Rec1 From Tab_1 a Group By Cod)
Order By Rec1)) n
Where m.R1 <= n.R2
And m.R1 =
(Select Max(R1)
From (Select m.R1, Sum(n.Rec1)
From (Select Cod, Rec1, Rownum R1
From (Select Cod, Rec1
From (Select Cod, Sum(Rec) Rec1
From Tab_1 a
Group By Cod)
Order By Rec1)) m,
(Select Cod, Rec1, Rownum R2
From (Select Cod, Rec1
From (Select Cod, Sum(Rec) Rec1
From Tab_1 a
Group By Cod)
Order By Rec1)) n
Where m.R1 <= n.R2
Group By m.R1
Having Sum(n.Rec1) > = (Select Sum(Rec) * 0.8 From Tab_1)))
Order By m.Rec1 Desc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值