Mysql 如果我的结果集由分组记录和求和记录组成,那么如何对这些记录进行求和/平均?
我忍不住认为有一个简单的方法可以做到这一点,但我想确保我做得正确,不要错过社区一定会提供的任何简单性!我有两个表:Mysql 如果我的结果集由分组记录和求和记录组成,那么如何对这些记录进行求和/平均?,mysql,sum,average,Mysql,Sum,Average,我忍不住认为有一个简单的方法可以做到这一点,但我想确保我做得正确,不要错过社区一定会提供的任何简单性!我有两个表:order和line,分别对订单、地点和订单中的项目进行建模,就像您所期望的那样,以一对多的关系进行。行关系中的每条记录都有一个指向顺序的外键 我想创建一个简单的报告,计算出过去6个月所有订单的平均重量。重量存储在行表格中,表示单个项目的重量,该项目需要使用数量(数量)进行计算。我的计划是先对这些行进行求和,然后计算出它们的平均值,但尽管求和似乎效果不错,但我不确定如何在这里应用平均
order
和line
,分别对订单、地点和订单中的项目进行建模,就像您所期望的那样,以一对多的关系进行。行
关系中的每条记录都有一个指向顺序
的外键
我想创建一个简单的报告,计算出过去6个月所有订单的平均重量。重量
存储在行
表格中,表示单个项目的重量,该项目需要使用数量(数量
)进行计算。我的计划是先对这些行进行求和
,然后计算出它们的平均值,但尽管求和
似乎效果不错,但我不确定如何在这里应用平均值。同样,我不知道如何得到所有这些总和,以便我可以手动进行计算
示例SQL
SELECT
SUM(a.weight * a.qty)
FROM
line AS a
LEFT JOIN
order AS b ON a.order_id = b.id
WHERE
b.datetime > DATE_SUB(NOW(), INTERVAL 6 MONTH) AND b.status = 'P'
GROUP BY a.order_id
ORDER BY b.datetime ASC;
示例结果
20.0000
66.7400
20.7300
7.5000
7.1100
我应该如何利用这些结果计算出平均值,或者至少是总数?从现有查询(使用派生表)获得结果的最简单方法:
我将添加反勾号…;)
SELECT AVG(weight) AS Average, SUM(weight) AS Total
FROM
(
SELECT
SUM(a.weight * a.qty) AS weight
FROM
`line` AS a
LEFT JOIN
`order` AS b ON a.order_id = b.id
WHERE
b.datetime > DATE_SUB(NOW(), INTERVAL 6 MONTH) AND b.status = 'P'
GROUP BY a.order_id
) a