2016-11-22 68 views
0

我有一個訂單表。我想在單個查詢中以每週,每月和每年明智的方式獲得我的訂單價格總和。我怎樣才能做到這一點?如何在MySQL查詢中每週,每月和每年明智地總結金額?

這是非常簡單的,如果我分開查詢。我的查詢是:

SELECT SUM(price) AS weekly_price FROM orders WHERE date > DATE_SUB(NOW(), INTERVAL 1 WEEK);   
SELECT SUM(price) AS monthly_price FROM orders WHERE date > DATE_SUB(NOW(), INTERVAL 1 MONTH); 
SELECT SUM(price) AS yearly_price FROM orders WHERE date > DATE_SUB(NOW(), INTERVAL 1 YEAR); 

請幫我寫你的答案是如何獲得在一個查詢我weekly_pricemonthly_priceyearly_price

回答

0

你可以在SUM()中做CASE WHEN。就像這樣:

SELECT 
    SUM(CASE WHEN orders.date > DATE_SUB(NOW(), INTERVAL 1 WEEK) THEN orders.price ELSE 0 END) AS weekly_price, 
    SUM(CASE WHEN orders.date > DATE_SUB(NOW(), INTERVAL 1 MONTH) THEN orders.price ELSE 0 END) AS monthly_price, 
    SUM(CASE WHEN orders.date > DATE_SUB(NOW(), INTERVAL 1 YEAR) THEN orders.price ELSE 0 END) AS yearly_price 
FROM 
    orders; 
1

你可以使用一個內部連接子選擇的

select t1.weekly_price, t2.monthly_price, t3.yearly_price 
    from ( 
      SELECT 1 as key, SUM(price) AS weekly_price 
      FROM orders 
      WHERE date > DATE_SUB(NOW(), INTERVAL 1 WEEK) 
    ) t1 
    inner join (  
     SELECT 1 as key, SUM(price) AS monthly_price 
     FROM orders 
     WHERE date > DATE_SUB(NOW(), INTERVAL 1 MONTH) 
    ) t2 on t1.key = t2.key 
    inner join ( 
     SELECT 1 as key, SUM(price) AS yearly_price 
     FROM orders 
     WHERE date > DATE_SUB(NOW(), INTERVAL 1 YEAR) 
    } t3 on t1.key = t3.key 
相關問題