2009-07-15 114 views
6

任何人都可以發佈SQL查詢來計算每天的訂單總數嗎?用於計算每天訂單總數的SQL查詢?

以下是我的數據庫中的列及其數據。


order_id order_placed_date order_total 
- 1 12/30/2008 12:06:24 AM 2499.99 
- 2 2/3/2009 1:57:17 AM 199.99 
- 3 2/3/2009 1:58:27 AM 449.99 
- 4 5/3/2009 1:58:48 AM 299.99 
- 5 6/3/2009 2:00:31 AM 359.94 
- 6 6/3/2009 2:01:47 AM 279.97 
- 7 6/3/2009 2:02:31 AM 1359.94 
- 9 7/1/2009 2:21:18 PM 5099.98 
- 10 7/1/2009 2:21:36 PM 2621.97 
- 11 7/2/2009 2:22:18 PM 2169.95 
- 12 7/3/2009 2:23:29 PM 2249.95 
- 13 7/4/2009 2:24:24 PM 5509.95 
- 14 7/5/2009 12:15:17 AM 449.99 
- 15 7/5/2009 12:18:08 AM 2299.99 
- 16 7/5/2009 12:18:28 AM 3999.99 
- 17 7/5/2009 12:18:45 AM 1939.99 
- 18 7/5/2009 11:58:07 PM 39.99 
- 19 7/6/2009 12:00:42 AM 1899.99 
- 20 7/6/2009 12:01:00 AM 3999.99 
- 21 7/7/2009 12:06:38 AM 199.99 
- 22 7/7/2009 12:08:31 AM 1143.97 
- 23 7/7/2009 12:09:13 AM 449.99 
- 26 7/15/2009 1:30:03 PM 5469 
- 27 7/15/2009 2:14:24 PM 329.97 
- 28 7/15/2009 6:18:47 PM 5469 
- 29 7/15/2009 10:17:36 PM 39.99 

對於例如有2個訂單在2009年Febuary

- 2 2/3/2009 1:57:17 AM  199.99 
- 3 2/3/2009 1:58:27 AM  449.99 

的一個月,我需要一個SQL查詢這將計算和顯示每天的總量。因此,對於2009年2月3日,共將699.98

我需要在一個圖表

顯示每天的總訂單金額如果它會更容易使用PHP來做到這一點,不要提它。


UPDATE:
我想澄清,我需要總量爲每天當前月。我在最初的問題中忘記提及這一點。

因此,我在本月使用彼得的查詢來獲得每日訂單總數+總金額。

請讓我知道它是否需要更正,或者是否有更好更短的方法。


SELECT date(order_placed_date), COUNT(order_id) AS num_orders, SUM(order_total) AS daily_total 
FROM orders 
WHERE order_placed_date>=date_sub(current_date, INTERVAL 31 DAY) 
GROUP BY date(order_placed_date) 
+0

這一天會是一個參數嗎?或者它會被綁定到今天?或者它會返回一個「日期」/「當天總計」的表格? – NikolaiDante 2009-07-15 18:33:19

回答

9

MySQL's date() function將返回一個DATEIME或TIMESTAMP值沒有任何小時/分鐘/秒信息 - 這意味着你降低精度值的一天。

所以你需要做的就是按照它進行分組,然後將你的聚合函數添加到正確的列。

SELECT date(order_placed_date) 
    , COUNT(id) AS num_orders 
    , SUM(order_total) AS daily_total 
    FROM [Table] 
GROUP BY date(order_placed_date) 
+1

需要聲明 – 2009-07-15 18:41:26

0

一個group by這裏是你的朋友。它可以聚合在分組行上。示例查詢是:

SELECT order_placed_date, SUM(order_total) 
    FROM orders 
GROUP BY order_placed_date 

當然,在你的例子你可能要提取使用DATE()功能組由剛日/月/年的一部分,和。

+0

這將無法正常工作,因爲放置命令是一個日期時間字段,並將按秒分組。他還要求SUM不AVG。 – 2009-07-15 18:40:14

+0

我注意到發佈答案並相應編輯後的一分鐘。 – MoshiBin 2009-07-15 21:39:47

0

我不知道它是什麼,在MYSSQL但在MSSQL會是這樣,

select 
datepart(yyyy, order_placed_date), 
datepart(mm, order_placed_date), 
datepart(dd, order_placed_date), 
sum(order_total) 
from orders 
group by datepart(yyyy, order_placed_date), datepart(mm, order_placed_date), datepart (dd, order_placed_date) 
1
SELECT date(order_placed_date) 
    , COUNT(id) AS num_orders 
    , SUM(order_total) AS daily_total 
    FROM orders 
GROUP BY 1 

抄襲彼得的答案,但它改變所以它會工作。另外通過小組推斷。

0
select YEAR(datename(year,ORDER_DATE)) as YEARS, 
     count(ORDER_nO) as [NO(ORDER)] 
     from ProductOrder 
     group by YEAR(datename(year,ORDER_DATE))