问题;
最终结果:


目前写的代码,但mysql 不支持开窗函数,想问一下怎么修改
select row_number() over(order by (je/累计) desc) as 排名,PRODUCTNAME,je,je/累计 as 占比,累加/累计 as 累计占比
from
(
select PRODUCTNAME,je,sum(je) over() as 累计,sum(je) over(order by je) as 累加from(select PRODUCTNAME,sum(SALE_AMOUNT*PRICE) as jefrom sql2002_01 inner join sql2002_03 on sql2002_01.PRODUCTID=sql2002_03.PRODUCTIDgroup by PRODUCTNAME) t) tt where 累加/累计>0.8;
表


表2002_01
PRODUCTID PRODUCTNAME PRICE
P001 产品A 29.18
P002 产品B 49.84
P003 产品C 41.68
P004 产品D 58.88
P005 产品E 49.37
P006 产品F 10.2
P007 产品G 22.87
P008 产品H 23.78
P009 产品I 50.28
P010 产品J 63.96
表sql2002_02
CUSTOMID CUSTOMNAME COUNTRY
C001 客户A 中国
C002 客户B 法国
C003 客户C 中国
C004 客户D 英国
C005 客户E 美国
C006 客户F 中国
C007 客户G 法国
C008 客户H 英国
C009 客户I 美国
C010 客户H 英国
表sql2002_03
ORDERID ZTIME PRODUCTID SALE_AMOUNT CUSTOMID
O001 2020/9/10 P010 96 C008
O002 2020/8/29 P008 38 C007
O003 2020/8/10 P007 97 C008
O004 2020/9/27 P005 62 C006
O005 2020/8/17 P007 37 C009
O006 2020/9/6 P006 3 C005
O007 2020/8/30 P009 86 C007
O008 2020/9/4 P001 34 C007
O009 2020/9/9 P003 99 C004
O010 2020/9/6 P002 65 C010
O011 2020/8/8 P005 11 C002
O012 2020/9/20 P002 3 C008
O013 2020/8/15 P004 9 C004
O014 2020/8/28 P007 99 C010
O015 2020/8/23 P003 3 C005
O016 2020/8/8 P006 51 C008
O017 2020/9/4 P009 99 C002
O018 2020/8/12 P007 86 C003
O019 2020/9/22 P001 73 C005
O020 2020/8/3 P009 22 C006
O021 2020/8/22 P007 54 C006
O022 2020/9/29 P005 59 C005
O023 2020/8/15 P003 45 C006
O024 2020/9/12 P001 10 C004
O025 2020/8/23 P004 56 C008
O026 2020/9/17 P003 57 C004
O027 2020/8/23 P002 73 C003
O028 2020/9/22 P003 50 C008
O029 2020/9/22 P003 70 C007
O030 2020/8/13 P006 15 C002
1、需求中的占比是按总销售额计算吗?
2、累计占比也是以总销售额计算吗?但各产品按什么条件累计并没有明确
3、你的代码在MySQL 8 中是可以运行的,不过如上所述,需求有点混乱,查询结果也完全不是想要的结果,只有一条销售额最大的产品C的数据,而且累计占比为1……
# | 排名 | productname | je | 占比 | 累计占比 |
---|
1 | 1 | 产品C | 13,504.32 | 0.2214696848 | 1 |