首页 > 解决方案 > MySQL平均函数未返回预期结果

问题描述

从 2015 年 1 月 1 日开始,我只需要获取这些订单的总金额的平均值。不知何故,我没有得到预期的结果。

问题陈述:从 2015 年 1 月 1 日(含)开始,为每位客户返回他们的 ID、姓名和平均订单总额。仅显示至少下过 2 个订单的客户。

由于涉及多个条件,我创建了查询,包括 where、group by 和 having 子句,如下面的查询所示

SELECT c.CustomerId, c.CustomerName, AVG(o.total)
FROM db_order.Customer c JOIN db_order.orders o 
on c.customerId = o.customerId
where o.orderDate >= 01-01-2015 
group by o.CustomerId, c.CustomerName
having count(o.orderId) >= 2

预期输出有 6 行,实际有 8 行。即使在平均总数中,返回的结果也存在差异。

SQL Fiddle: http ://sqlfiddle.com/#!9/ d872bf Db Fiddle完整数据:https ://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=dd6fcb2a41634b0e4beb8acc3288e922

标签: mysqlsql

解决方案


这是否解决了您的问题:

SELECT c.CustomerId
       , c.CustomerName
       , AVG(o.total)
FROM Customer c 
JOIN Orders o on c.customerId = o.customerId
where o.orderDate >= '2015-01-01' 
group by o.CustomerId
      , c.CustomerName
having count(o.orderId) >= 2

这是DEMO 按要求显示 6 行...


推荐阅读