首页 > 解决方案 > SQL如何统计第一个小时的订单数

问题描述

假设有一个像这样的表:

DateTime - When the order was placed
CustomerId - The id of the customer
<other fields>

如何创建一个查询,告诉我客户在创建第一个订单后一小时内下达的订单总数。

我目前正在为每个客户找到第一个订单,将其连接回原始表,并做一个countif但想知道是否有一种方法可以一步完成。

标签: sql

解决方案


在标准 SQL 中,您可以使用如下逻辑:

select customerid, count(*)
from (select t.*,
             min(datetime) over (partition by customerid) as min_datetime
      from t
     ) t
where datetime < min_datetime + interval '1 hour'
group by customerid;

数据库之间的日期/时间函数差异很大,但这种通用结构几乎适用于每个数据库。


推荐阅读