加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 在Postgres中按值计算Group的百分比值

发布时间:2020-12-13 16:00:41 所属栏目:百科 来源:网络整理
导读:我想计算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 keyboar
我想计算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

请帮我搞定.我为表结构创建了一个SQLFIDDLE.

解决方法

快速:

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

第一个子请求计算总金额,子请求用于百分比.

必须有一种更优化的方法来完成它,但这样做

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读