我有一个查询,它返回按月分组的销售总值。我想添加一个列,该列返回与前几行相比百分比的增长/减少。
我已经尝试过使用CREATE TEMPORARY TABLE,创建了一个变量@var :=,但是没有什么是真正有效的。理想情况下,我的结果是:
Month | Sales | Perc
1     | 100   | 0
2     | 150   | 50
3     | 100   | -33.33要做的计算是:((actual_value - previous_value) / previous_value) *100
关于表,我使用了sales、products、sales_items,所以我检索按月分组的总销售额的查询是:
SELECT 
    MONTH(s.sale_date) AS Month,
    SUM(p.retail_price * si.quantity) AS Sales_Amount
FROM sales s
INNER JOIN sales_items si ON s.sale_id = si.sale_id
INNER JOIN products p ON si.product_id = p.product_id
WHERE YEAR(s.sale_date) = '2018'
GROUP BY month 
ORDER BY month;由于我正在使用SUM总结销售项目,并将其聚合到每个sale_id中,在按月分组之后,将该值用于新列似乎很复杂,因此如果有人知道如何做这件事,那就太好了。
发布于 2019-03-29 22:02:35
在名为month_sales的临时表下面创建
SELECT 
MONTH(s.sale_date) AS Month,
SUM(p.retail_price * si.quantity) AS Sales_Amount
FROM sales s
INNER JOIN sales_items si ON s.sale_id = si.sale_id
INNER JOIN products p ON si.product_id = p.product_id
WHERE YEAR(s.sale_date) = '2018'
GROUP BY month 
ORDER BY month;查询以查找逐个月之间的差异是:
SELECT *, 
case 
when m2.Sales_Amount is null then 0 
else (m2.Sales_Amount - m1.Sales_Amount)/m1.Sales_Amount 
end as Perc
FROM month_sales m1
left Join month_sales m2
WHERE m1.month = m2.month - 1https://stackoverflow.com/questions/55425016
复制相似问题