sql - SQL如何统计第一个小时的订单数
问题描述
假设有一个像这样的表:
DateTime - When the order was placed
CustomerId - The id of the customer
<other fields>
如何创建一个查询,告诉我客户在创建第一个订单后一小时内下达的订单总数。
我目前正在为每个客户找到第一个订单,将其连接回原始表,并做一个countif
但想知道是否有一种方法可以一步完成。
解决方案
在标准 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;
数据库之间的日期/时间函数差异很大,但这种通用结构几乎适用于每个数据库。
推荐阅读
- php - 图片正在使用 PHP 上传到 Firebase 存储,但必须手动创建访问令牌以使其可见
- mysql - 警告:(1366,“第 1 行的列 'VARIABLE_VALUE' 的字符串值不正确:'\\xB4\\xEB\\xC7\\xD1\\xB9\\xCE...'”)结果 = self._query(查询)
- python - 分组和聚合后未找到 Pandas colnames
- android - 如何在不以图形方式剪切的情况下仅将前一个片段滑出 50% 或 25%?
- java - 如何在 MapStruct 中映射扩展类
- python - 从两个字典的差异创建字典
- node.js - 属性 id 后的 MongoDb Shell 语法错误
- javascript - 为什么 vuelidate 验证器不再对输入更改做出反应?
- java - 在 Android 中的活动之间保持 Websocket 活动
- c# - 将字符串值转换为浮点值