mysql - 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
解决方案
这是否解决了您的问题:
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 行...
推荐阅读
- c - 与指针数组中的引用项目混淆
- macros - Julia 元编程和 nloops 变量评估
- sonos - 显示 Sonos Credentials 的页面是否允许复制?
- javascript - 出现在“HTML5 游戏:新手到忍者”一书的 Github 代码存档中的 bundles.js 文件是什么?
- jquery - 如何为多选列表调整类似于 Stack O 的输入大小
- java - Android Studio 损坏的项目
- javascript - Heroku 时钟进程在推送到服务器时已经运行作业
- c++ - 班级没有成员发言?
- go - 为什么使用 ParseInLocation 打印不同的时区?
- postman - 如何在 Postman 中设置默认响应(示例)