2017-10-20 77 views
2

我搜索周围,找到的解决办法,而是因为他们使用的功能从其他软件,他们没有使用MySQL。计算一个月一个月的数字

我试图表现出一个月比一个月增长本年度(始于1月),但知道如何在过去的一年内检查可能会派上用场的未来也是如此。

的“订单”表可能是什么样子:

+-----------+-------+ 
| Month | Sales | 
+-----------+-------+ 
| 1-1-2017 |  3 | 
| 1-5-2017 |  9 | 
| 2-16-2017 | 10 | 
| 2-16-2017 | 13 | 
| 3-7-2017 | 25 | 
| 4-29-2017 | 22 | 
+-----------+-------+ 

我想要的查询结果是什么样子:

+----------+-------+--------+ 
| Month | Sales | Growth | 
+----------+-------+--------+ 
| January | 12 |  | 
| February | 23 | 91.66% | 
| March | 25 | 8.69% | 
| April | 22 | -12% | 
+----------+-------+--------+ 

有没有一种简单的方法来做到这一点?

回答

0

你可以做这样的事情:

SELECT 
    thisMonth.MonthOnly, 
    SUM(thisMonth.Sales) AS ThisMonthSales, 
    (SUM(thisMonth.Sales)/SUM(lastMonth.Sales) - 1) * 100 AS Growth 
FROM 
    (
    SELECT STR_TO_DATE(DATE_FORMAT(Month, '%Y%m01'), '%Y%m%d') AS MonthOnly, 
    SUM(Sales) AS Sales 
    FROM orders 
    GROUP BY DATE_FORMAT(Month, '%Y%m01') 
) thisMonth 
    LEFT OUTER JOIN 
    (
    SELECT STR_TO_DATE(DATE_FORMAT(DATE_ADD(Month, INTERVAL 1 MONTH), '%Y%m01'), '%Y%m%d') AS MonthOnly, 
    SUM(Sales) AS Sales 
    FROM orders 
    GROUP BY DATE_FORMAT(Month, '%Y%m01') 
) lastMonth 
    ON thisMonth.MonthOnly = lastMonth.MonthOnly 
GROUP BY thisMonth.MonthOnly