问题遇到的现象和发生背景
在做统计的时候想直接计算每个部门中物品数量和所有部门中的物品数量的比值,但是使用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’,再在外面进行外连接查询,根据两个视图的数据进行连接。将每个数据上都加上所有部门物品数量总和数据去求比值。