2009-07-15 4 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 заказов в месяц Febuary 2009

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

Мне нужен SQL запрос, который будет вычислить и показать общую сумму в день. Так что для 3-го февраля 2009 года, общая сумма составит 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

ответ

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

Нуждается в заявлении –

+0

ха-ха, спасибо. Добавлено:) –

+0

Отлично, работал как шарм. Теперь мне просто нужно отправить его на мой график. –

0

group by ваш друг здесь. Он может группироваться по сгруппированным строкам. Пример запроса будет:

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

Конечно, в вашем примере вы, вероятно, хотите, чтобы извлечь только день/месяц/год часть с помощью функции DATE() и группу по этим.

+0

Это не сработает, потому что заказ, поставленный судьбой, является полем datetime и будет группироваться по секундам.Он также попросил SUM не AVG. –

+0

Я заметил, что через минуту после публикации ответа и редактирования соответствующим образом. – MoshiBin

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)) 
+0

Можете ли вы предоставить контекст вокруг вашего ответа? Спасибо! – Shawn

Смежные вопросы