2009-07-16 187 views
3

我想計算我在前一週的總訂單金額。MySQL查詢計算上週

我得到了從當前日期獲取過去7天數據的查詢。

SELECT SUM(goods_total) AS Total_Amount FROM orders 
WHERE order_placed_date >= date_sub(current_date, INTERVAL 7 day); 

現在我怎樣才能得到上週的數據只有本週不包括在內。

例如,本週我賺了15,000美元,上週我賺了14,000美元。

我通過運行上述查詢得到15,000美元。

但我不知道如何計算上週。

回答

4

根據您在Alex的回答給了更多的信息,我想下面的馬y工作:

SELECT SUM(goods_total) AS Total_Amount, "Previous week" AS Week FROM orders 
WHERE order_placed_date >= date_sub(current_date, INTERVAL 14 day) 
AND order_placed_date < date_sub(current_date, INTERVAL 7 day) 
UNION 
SELECT SUM(goods_total) AS Total_Amount, "This week" AS Week FROM orders 
WHERE order_placed_date >= date_sub(current_date, INTERVAL 7 day) 

這應該返回兩行和兩列,每個星期的總金額。

0

嘗試:

SELECT SUM(goods_total) AS Total_Amount FROM orders 
WHERE order_placed_date >= date_sub(current_date, INTERVAL 14 day) 
AND order_placed_date < date_sub(current_date, INTERVAL 7 day); 
1

如果你想 「滾動周」(滑動7天之久的窗口),而不是開始於週日(或其他特定平日)周,

SELECT SUM(goods_total) AS Total_Amount FROM orders 
WHERE order_placed_date BETWEEN 
date_sub(current_date, INTERVAL 14 day) AND 
date_sub(current_date, INTERVAL 8 day); 
+0

這也是有用的。但我希望從今天到最後7天(本週),以及從前7天延續至前一週的7天。 – 2009-07-16 15:20:08

+0

你的意思是,你想要一週重疊一天?或者你在句子的「to」或「from」部分暗示「被排除」? BETWEEN是否包括在內,因此需要照顧。 – 2009-07-16 15:28:40

+0

我想計算上週從今天的日期開始並返回。我不需要像第一到第七等幾周。 – 2009-07-16 15:42:13

0

什麼關於以下查詢:

SELECT count(order_placed_date) 
FROM  orders 
WHERE YEARWEEK(order_placed_date) = YEARWEEK(CURRENT_DATE - INTERVAL 7 DAY) 
0
 
mysql> SELECT DATE_SUB(current_date, INTERVAL WEEKDAY(current_date)+8 DAY) last_sunday 
, YEARWEEK(DATE_SUB(current_date, INTERVAL WEEKDAY(current_date)+8 DAY)) last_week_of_year 
, DATE_SUB(current_date, INTERVAL WEEKDAY(current_date)+1 DAY) this_sunday 
, YEARWEEK(DATE_SUB(current_date, INTERVAL WEEKDAY(current_date)+1 DAY)) this_week_of_year; 

*************************** 1. row *************************** 
     last_sunday: 2012-01-29 
last_week_of_year: 201205 
     this_sunday: 2012-02-05 
this_week_of_year: 201206 
3

前8〜14天的記錄不包括過去7天的記錄,查詢:

SELECT * FROM `Table_Name` 
WHERE `Field_Name` >= DATE_SUB(NOW(),INTERVAL 14 DAY) 
AND `Field_Name` < DATE_SUB(NOW(),INTERVAL 7 DAY) 
  • Field_Name:必須在YYYY-mm-dd(2012年9月20日)格式的有效日期。
  • Table_Name:你需要從哪裏獲取記錄。