首页 > 解决方案 > 如何在 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

标签: javamysqlspringquerydsl

解决方案


请试试这个。

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)

推荐阅读