kiyokiwa 2022-07-15 11:20 采纳率: 81.8%
浏览 35
已结题

统计,在sql中求每个部门的数据比值

问题遇到的现象和发生背景

在做统计的时候想直接计算每个部门中物品数量和所有部门中的物品数量的比值,但是使用group中使用sum肯定是只能计算分组后的数据。不能计算出所有列的总数。不知道有什么好办法实现,俺不才,只能想出暴力方法。

问题相关代码
SELECT
    *,
    total / num 
FROM
    (
    SELECT
        sd.depart_name,
        sum( d.stock ) AS total
        1 AS n 
    FROM
        depart d
        LEFT JOIN sys_depart sd ON d.depart_id = sd.id
    WHERE
        d.is_delete = 0 
    GROUP BY
        d.depart_id 
    ) AS n
    LEFT JOIN ( SELECT 1 AS n, sum( stock ) AS num FROM depart ) AS b ON n.n = b.n

此处是先计算出所有部门的物品总数,并设置固定id ‘n’ 然后查询分组后的部门物品数量,设置id ‘n’,再在外面进行外连接查询,根据两个视图的数据进行连接。将每个数据上都加上所有部门物品数量总和数据去求比值。
运行结果

img

  • 写回答

1条回答 默认 最新

  • 三千烦恼丝xzh 2022-07-15 14:31
    关注

    你可以使用rollup修饰group by可以达到多出一条全聚合的记录,比值的话取这条记录挺麻烦的你酌情考虑下,group by xxx with rollup
    如果你是MySQL至少需要8.0才支持

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月2日
  • 已采纳回答 7月25日
  • 创建了问题 7月15日

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)