java - 如何在 MYSQL 中按年计算订单组的统计信息?
问题描述
订单表。
ID | 创建日期 | 价格 |
---|---|---|
1 | 2021-09-01 | 100 |
2 | 2021-09-01 | 50 |
3 | 2020-09-01 | 50 |
4 | 2020-09-01 | 150 |
5 | 2019-09-01 | 100 |
订单明细表:-
ID | order_id | 产品数量 |
---|---|---|
1 | 1 | 10 |
2 | 2 | 20 |
3 | 1 | 30 |
4 | 3 | 10 |
5 | 3 | 20 |
6 | 4 | 30 |
7 | 5 | 20 |
所以我需要一个 MySQL 查询来获取有关每年订单数量、价格和产品数量的统计信息。
预期的表
年(创建日期) | 订单数 | product_quantity_in_orders | 价格 |
---|---|---|---|
2021 | 2 | 60 | 150 |
2020 | 2 | 60 | 150 |
2019 | 1 | 20 | 100 |
解决方案
请试试这个。
SELECT YEAR(o.created_date) year_created
, COUNT(o.id) orders_count
, SUM(t.product_quantity) product_quantity_in_orders
, SUM(o.price) price
FROM orders o
INNER JOIN (SELECT order_id
, SUM(product_quantity) product_quantity
FROM order_details
GROUP BY order_id) t
ON o.id = t.order_id
GROUP BY YEAR(o.created_date)
推荐阅读
- php - mysql WHERE语句中的字符串数组值
- ionic-framework - Ionic v3:使用离子范围时,离子图标不显示
- javascript - 如何根据其他文件中的键创建可变 html 表单
- django - CreateView + get_absolute_url
- scala - Scala 泛型:类型与折叠不匹配
- azure - 长时间处理后 Azure 网站超时
- matlab - 如何在 MATLAB 中有效地为绘图设置动画?
- javascript - 如何使用 sequelize 删除数据行?
- python - 如何计算文件中字符串的出现次数并将其附加到另一个文件中
- ssl - 如何在 amazon linux AMI 中安装让我们加密 ssl?