Postgresql 在Postgres中按值计算组的百分比值
我想计算Group by中某个值的百分比。我的表格数据Postgresql 在Postgres中按值计算组的百分比值,postgresql,group-by,percentage,Postgresql,Group By,Percentage,我想计算Group by中某个值的百分比。我的表格数据 salesId salesAmount productName salesTyp ------- ----------- ----------- -------- 1 50.00 mouse online 2 100.00 mouse shop 3 150.00 mouse sh
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
我想表现出的那种
productName totalamount percentageofonline
----------- ----------- ------------------
mouse 350 25.00
keyboard 150 50.00
这里销售了4只鼠标(3只在商店,1只在网上),因此百分比为25.00还有两个键盘被售出(一个在商店,一个在网上),所以百分比是50.00 请帮我拿。我已经创建了一个for表结构。快速:
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
第一个子请求计算总金额,子请求用于百分比
必须有一种更优化的方法来实现这一点,但这确实起到了作用