Может ли кто-нибудь отправить 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
Например, в феврале 2009 года есть 2 заказа
- 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, укажите и его.
ОБНОВИТЬ:
Я хотел бы уточнить, что мне нужно Общее количество за день в настоящем месяце. Я забыл упомянуть об этом в своем первоначальном вопросе.
Поэтому я обжаловал запрос Питера, чтобы получить общее количество заказов + общая сумма за день в этом месяце.
Пожалуйста, дайте мне знать, нужна ли вам какая-либо коррекция или есть лучший и более короткий способ сделать это.
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)
Функция date () MySQL возвращает значение 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)
SELECT date(order_placed_date) , COUNT(id) AS num_orders , SUM(order_total) AS daily_total FROM orders GROUP BY 1
Просто скопировал ответ Питера, но изменил его, чтобы он работал. Плюс сократил группу.
Группа – ваш друг здесь. Он может группироваться по сгруппированным строкам. Пример запроса:
SELECT order_placed_date, SUM(order_total) FROM orders GROUP BY order_placed_date
Конечно, в вашем примере вы, вероятно, захотите извлечь только часть день / месяц / год, используя функцию DATE () , и сгруппируйте ее.
Я не знаю, что это такое в 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)
select YEAR(datename(year,ORDER_DATE)) as YEARS, count(ORDER_nO) as [NO(ORDER)] from ProductOrder group by YEAR(datename(year,ORDER_DATE))