Sat*_*h S 6 postgresql group-by percentage
我想计算Group by中值的百分比.我的表数据
salesId salesAmount productName salesTyp
------- ----------- ----------- --------
1 50.00 mouse online
2 100.00 mouse shop
3 150.00 mouse shop
4 50.00 mouse shop
5 100.00 keyboard shop
6 50.00 keyboard online
Run Code Online (Sandbox Code Playgroud)
Out put我想表现得像
productName totalamount percentageofonline
----------- ----------- ------------------
mouse 350 25.00
keyboard 150 50.00
Run Code Online (Sandbox Code Playgroud)
这里出售4只鼠标(商店3只,网上1只),所以百分比为25.00
,售出2个键盘(商店1个,网上1个),所以百分比为50.00
请帮我搞定.我已经为表结构创建了一个SQLFIDDLE.
小智 5
快速地:
WITH total AS (
SELECT productName, sum(salesAmount) AS totalamount
FROM testSales
GROUP BY productName
)
SELECT total.totalamount, total.productName, (
SELECT count(*)
FROM testSales
WHERE salesTyp='online'
AND productName = total.productName
)::float / count(*) * 100 as percentageofonline
FROM testSales, total
WHERE testSales.productName = total.productName
GROUP BY total.productName, total.totalamount
Run Code Online (Sandbox Code Playgroud)
第一个子请求计算总量,子请求用于百分比。
必须有一种更优化的方法来完成此任务
| 归档时间: |
|
| 查看次数: |
3567 次 |
| 最近记录: |