【发布时间】:2019-10-25 06:47:04
【问题描述】:
我有 3 张桌子:
- 产品(有产品 ID、价格等)
- 订单(包含订单 ID、日期等)
- orders_products(包含产品数量等订单详情)
我想计算每年销售的产品总量。为此,我编写了以下查询:
SELECT YEAR(`o`.`date_purchased`) AS year,
SUM(`op`.`products_quantity`) AS TotalUnits,
`p`.`products_id`,
`p`.`products_price` AS price,
( SUM(`op`.`products_quantity`) * `p`.`products_price` ) AS TotalAmount
FROM `orders` AS `o`
INNER JOIN `orders_products` AS `op`
ON `o`.`orders_id` = `op`.`orders_id`
INNER JOIN `products` AS `p`
ON `op`.`products_id` = `p`.`products_id`
GROUP BY `p`.`products_id`
ORDER BY year
它给了我以下结果集:
它给了我按产品分组的总金额。但我想得到按年份分组的总金额。
所以对于 2016 年(以及其他年份),我想要以下结果:
2016 10,606 (since 6478 + 632 + 2072 + 1424)
但我无法计算按年份分组的总金额,因为每种产品的价格不同。那么如何修改我现有的查询以获取每年销售的产品总量?
如果单用 MySQL 做不到,那我会毫不犹豫地使用 PHP。
【问题讨论】:
-
添加 GROUP BYYEAR(
o.date_purchased),p.products_id -
@Kinjal,你提供的错误解决方案
标签: mysql