我想计算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
Out put我想表现得像
productName totalamount percentageofonline ----------- ----------- ------------------ mouse 350 25.00 keyboard 150 50.00
这里出售了4只鼠标(商店3只,网上1只),所以百分比是25.00
出售了2个键盘(1个在店里,1个在线),所以百分比是50.00
解决方法
快速:
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
第一个子请求计算总金额,子请求用于百分比.
必须有一种更优化的方法来完成它,但这样做
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。