2009-07-15 43 views
6

Mọi người có thể đăng truy vấn SQL để tính tổng số đơn đặt hàng mỗi ngày không?Truy vấn SQL để tính tổng số đơn đặt hàng mỗi ngày?

Dưới đây là các Cột cùng với dữ liệu của chúng trong Cơ sở dữ liệu của tôi.


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 

Đối với ví dụ có 2 đơn đặt hàng trong tháng Febuary 2009

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

Tôi cần một truy vấn sql mà sẽ tính toán và hiển thị tổng số tiền mỗi ngày. Vì vậy, cho 3 Tháng 2 năm 2009, tổng số sẽ là 699,98

tôi cần phải hiển thị Tổng số thứ tự Số tiền mỗi ngày trong một Chart

Nếu nó sẽ dễ dàng hơn để làm điều đó với PHP, đừng đề cập đến nó là tốt.


UPDATE:
Tôi muốn làm rõ rằng tôi cần tổng số tiền mỗi ngày trong tháng hiện tại. Tôi quên đề cập đến điều đó trong câu hỏi ban đầu của tôi.

Vì vậy, tôi đã xem xét truy vấn của Peter để nhận Tổng số đơn đặt hàng + Tổng số tiền mỗi ngày trong tháng này.

Vui lòng cho tôi biết nếu cần chỉnh sửa hoặc có cách thực hiện tốt hơn và ngắn hơn.


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

ngày nào có thể là thông số? hoặc nó sẽ được gắn với ngày hôm nay? hoặc nó sẽ trả về một bảng "ngày"/"tổng số cho ngày đó"? – NikolaiDante

Trả lời

9

MySQL's date() function sẽ trả về giá trị DATEIME hoặc TIMESTAMP mà không có bất kỳ thông tin giờ/phút/giây nào - có nghĩa là bạn giảm độ chính xác cho ngày của giá trị.

Vì vậy, tất cả những gì bạn cần làm là nhóm theo đó và sau đó thêm các hàm tổng hợp của bạn vào đúng cột.

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

Cần một tuyên bố từ –

+0

haha, cảm ơn. Đã thêm;) –

+0

Tuyệt vời, hoạt động như một sự quyến rũ. Bây giờ tôi chỉ cần chuyển tiếp nó đến biểu đồ của tôi. –

0

Một group by là bạn của bạn ở đây. Nó có thể tổng hợp trên các hàng được nhóm. Một truy vấn ví dụ sẽ là:

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

Tất nhiên, trong ví dụ của bạn, bạn có thể muốn chỉ trích một phần ngày/tháng/năm sử dụng chức năng DATE(), và nhóm vì điều đó.

+0

Điều này sẽ không hoạt động vì thứ tự đặt số phận là trường ngày giờ và sẽ nhóm theo giây.Ông cũng yêu cầu SUM không phải AVG. –

+0

Tôi nhận thấy rằng một phút sau khi đăng câu trả lời và chỉnh sửa cho phù hợp. – MoshiBin

0

Tôi không biết nó là gì trong MYSSQL nhưng trong MSSQL nó sẽ là này,

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 

Chỉ cần sao chép câu trả lời của Peter nhưng thay đổi nó để nó sẽ làm việc. Plus đã tắt nhóm này.

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

Bạn có thể cung cấp ngữ cảnh xung quanh câu trả lời của mình không? Cảm ơn bạn! – Shawn

Các vấn đề liên quan