MySQL - 如何删除子查询并简化 - 计算每年的销售额增长率

标签 mysql sql join subquery

我是 MySQL 的新手,试图弄清楚是否有一种方法可以简化我的查询,以获得“从 2014 年到 2015 年销售额增长了多少百分比”。请参阅

fiddle .

虽然结果是对的,但是我用了很多子查询。

这是我的想法:

SELECT s15.store_id, SUM(s15.sales)/SUM(s14.sales) - 1
FROM STORE S15 INNER JOIN STORE S14
    ON S15.store_id = S14.store_id
WHERE S15.year = 2015 and s14.year = 2014
GROUP BY S15.year, S14.year

有关优化的技巧,请随时告诉我。交易。

最佳答案

您可以使用条件聚合和一个分组依据:

SELECT store_id,
       SUM(CASE WHEN YEAR(order_date) = 2014 THEN order_amount END) AS sell_2014,
       SUM(CASE WHEN YEAR(order_date) = 2015 THEN order_amount END) AS sell_2015
FROM Orders
WHERE YEAR(order_date) IN ( 2014, 2015 )
GROUP BY store_id

我将把增长率的算术留给你。

关于MySQL - 如何删除子查询并简化 - 计算每年的销售额增长率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47039356/

相关文章:

更新后的 Mysql/插入触发器和 1442-错误

php - 使用 PHP 更新 MySQL 数据库

mysql - 根据表 Y 中的值进行小计的条件总和,与表 X 中的值一起显示。然后根据表 X 中的条件生成总计

mysql - 连接三个表以便丢弃额外的匹配项?

mysql - 如何从关系表中获取数据(多对多)

MySQL - 计算行数和左连接问题

java - 使用 Java、AJAX 使用 Rest Web 服务将表单数据插入 MySQL 数据库

sql - MySQL加入问题

php - 使用连接比较sql查询中的两个表

mysqladmin 设置初始 root 密码在脚本中失败但在 shell 中有效