用于计算每天订单总数的 SQL 查询?

Posted

技术标签:

【中文标题】用于计算每天订单总数的 SQL 查询?【英文标题】:SQL query for Calculating Total No. of Orders per Day? 【发布时间】:2009-07-15 18:30:00 【问题描述】:

任何人都可以发布用于计算每天订单总数的 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    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 更容易做到这一点,也请提及。


更新: 我想澄清一下,我需要本月每天的总金额。我忘了在我最初的问题中提到这一点。

所以我更新了彼得的查询以获得本月的订单总数 + 每天的总金额。

请让我知道它是否需要任何更正,或者是否有更好更短的方法。


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)

【问题讨论】:

日期会是一个参数吗?或者它会与今天有关吗?还是会返回“日期”/“当天总计”的表格? 【参考方案1】:

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)

【讨论】:

非常好,工作就像一个魅力。现在我只需要将它转发到我的图表。【参考方案2】:
SELECT date(order_placed_date)
     , COUNT(id) AS num_orders
     , SUM(order_total) AS daily_total
  FROM orders
 GROUP BY 1

只是复制了彼得的答案,但对其进行了更改,以便它可以工作。加上快捷方式的组。

【讨论】:

【参考方案3】:

group by 是您的朋友。它可以聚合在分组的行上。一个示例查询是:

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

当然,在您的示例中,您可能只想使用 DATE() 函数提取日/月/年部分,然后按此分组。

【讨论】:

这不起作用,因为下达的订单命运是一个日期时间字段,并且将按秒分组。他还要求 SUM 而不是 AVG。 我注意到在发布答案后一分钟并相应地进行了编辑。【参考方案4】:
select YEAR(datename(year,ORDER_DATE)) as YEARS,
       count(ORDER_nO) as [NO(ORDER)]
       from ProductOrder
       group by YEAR(datename(year,ORDER_DATE))

【讨论】:

您能否围绕您的答案提供上下文?谢谢!【参考方案5】:

我不知道它在 MySQL 中是什么,但在 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)

【讨论】:

以上是关于用于计算每天订单总数的 SQL 查询?的主要内容,如果未能解决你的问题,请参考以下文章

TP SQL统计查询语法

菜鸟 急求SQL数据查询问题 在线等

sql Magento 1 - SQL获取每个客户的销售和订单总数

用于评估多行的 SQL 查询

【写SQL语句】按照用户统计对应订单数和订单总金额?

SQL Server 查询以计算每日“持仓”未结订单