mysql - 如何对 MySql 中的每个聚合函数应用不同的 GROUP BY
问题描述
我有一个简单的问题,但我无法在文档或谷歌中找到答案。我有一张包含客户信息的表格,另一张包含有关订单的信息。每个客户都有多个订单。我需要创建 3 列:一列包含客户 ID,一列包含该客户的订单数,一列包含订单总数。例子:
客户表
CustomerID | PhoneNumber
____________|____________
AAA | 1-222-2
BBB | 1-333-3
订单表
CustomerID | OrderID
____________|____________
AAA | 1
AAA | 2
BBB | 3
BBB | 4
BBB | 5
预期结果:
Customer ID | Number of orders | Total number of orders
_____________|___________________|_______________________
AAA | 2 | 5
BBB | 3 | 5
当我使用 COUNT(OrderID) 时,我得到订单总数,当我将 COUNT 与 GROUP BY CustomerID 一起使用时,我得到每个客户的订单数,但我无法在同一个表中检索两者。有没有办法在 MySql 中做到这一点?
解决方案
这是使用带有分析功能的单遍查询执行此操作的 MySQL 8+ 方式:
SELECT
CustomerID,
COUNT(*) AS num_orders,
SUM(COUNT(*)) OVER () AS total_num_orders
FROM Orders
GROUP BY
CustomerID;
演示
推荐阅读
- android - RecycleView 在 PDF (PdfDocument) 中不可见
- java - getRuntime() 结果取决于 Netbeans 版本
- reactjs - React Typescript 自定义挂钩:类型“{}”上不存在属性“prop_name”
- python - 尝试拆分 csv 文件并获取错误标记数据
- javafx - 从 Platform.runLater 线程运行代码是否安全?
- python - 如何在 Django File Upload 中修复“迭代器应该返回字符串,而不是字节”
- mxgraph - mxgraph 在光标位置复制和粘贴
- python - 如何读取通过命令行参数传递的 txt
- octobercms - 有没有办法在十月 CMS 中使用 GET 参数进行重定向?
- python - 限制 selectinload SQLAlchemy 关系上的返回记录