2015-06-02 48 views
1

如何從代碼字中的mysql db獲得銷售額的季度變化趨勢(3 months)從mysql獲取銷售額的季度趨勢

我有一個數據表

order 
-id 
-paid_date 
-order_total 

我想接收的數據是總訂單值的斜率,而不是簡單地將在最近3個月的訂單數。

型號代碼

$results = $this->db->query("SOME_SQL"); 

伊夫開始寫以下,但在難倒如何顯示的結果作爲斜率 ::其中90表示大致3個月

$day_seconds = 86400; 
    $period = 90 * $day_seconds; 

    $this->db->select('COUNT(*) AS total', false); 
    $this->db->select("FROM_UNIXTIME(`paid_date`, '%Y-%m-%d') AS date", false); 
    $this->db->where('paid_date >', time()-$period); 

實施例預期輸出

輸出sho只有2個值才能顯示出趨勢。

$results = [ [ 0 => 44 ], [1=>88] ]; 

最好要需要的是知道,如果銷售的總收入是傾斜向上或向下,更高的正斜率表明大量增加銷售

例:

//Dramatic Increase of sales 
$results = [ [ 0 => 22 ], [1=>150] ]; 


//Slow Increase of sales 
$results = [ [ 0 => 50 ], [1=>55] ]; 

//Slow Decrease of sales 
$results = [ [ 0 => 64 ], [1=>55] ]; 
+0

預期結果是什麼?你能用言語告訴我們嗎? – Alfwed

+0

好吧不好更新我的問題,但基本上我想知道在過去3個月總收入是傾向上升還是下降 – user1827093

+0

與過去3個月前3個月相比? – Alfwed

回答

1

試試這個:

SELECT 
    *, 
    CASE WHEN last_3 > prev_3 THEN 
     'sales up' 
    ELSE 
     'sales down' 
    END AS sales_change, 
    (
     CONCAT(((last_3 - prev_3) * 100)/last_3, '%') 
    ) AS precentage_change 
FROM 
    (
     SELECT 
      SUM(order_total) AS last_3 
     FROM 
      TB 
     WHERE 
      paid_date > UNIX_TIMESTAMP(CURDATE() - INTERVAL 3 MONTH) 
    ) AS tb1, 
    (
     SELECT 
      SUM(order_total) AS prev_3 
     FROM 
      TB 
     WHERE 
      paid_date < UNIX_TIMESTAMP(CURDATE() - INTERVAL 3 MONTH) 
     AND paid_date > UNIX_TIMESTAMP(CURDATE() - INTERVAL 6 MONTH) 
    ) AS tb2 

這應該給你4個值:

  • last_3 - 訂單在過去3個月的總和
  • prev_3 - 在3個月的訂單是
  • sales_change之前的總和 - 文本時,銷售均達到或近3個月下來
  • precentage_change - 數值(以%),顯示在此之前

的銷售額在過去3個月和3個月之間precentages的變化在MySQL的使用間隔,你可以使用幾天或幾周

它調整到您的需要
INTERVAL 1 DAY 
INTERVAL 1 WEEK 
+0

這是我得到的結果 ' array(size = 1) 0 => object(stdClass)[228] public'last_3'=> string '12。65'(length = 5) public'prev_3'=> null public'sales_change'=> string'sales down'(length = 10) public'precentage_change'=> null' prob becuase我沒有任何數據前3個月。 但它看起來不錯:) – user1827093

+0

不明白 - 你仍然有問題的查詢?如果有效的話,接受它作爲答案 – Lupin