sql - 将日期时间条目放入存储桶的 SQL 命令
问题描述
我有一个表结构如下:
timestamp
2020-03-10 04:05:44.000000
2020-03-10 04:05:44.000000
2020-03-10 04:05:44.000000
2020-03-10 04:05:44.000000
2020-03-10 07:07:44.000000
2020-03-10 07:07:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
2020-03-10 13:17:44.000000
每天只有三个时间戳(时间可能不同,但总是三个)。我想要的是另一列,它告诉我哪个时间戳是第一个、第二个和第三个,即产生如下输出:
timestamp timestamp_order
2020-03-10 04:05:44.000000 1
2020-03-10 04:05:44.000000 1
2020-03-10 04:05:44.000000 1
2020-03-10 04:05:44.000000 1
2020-03-10 07:07:44.000000 2
2020-03-10 07:07:44.000000 2
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
2020-03-10 13:17:44.000000 3
三个存储桶之间的条目数量可能不同。我已经尝试了一些 RANK() 或 NTILE() 函数,但无法获得正确的输出,因为它给我的数字太高(排名给我 1,1,1,1,5,5,...)或假设大小相同的桶。
谢谢!
解决方案
不确定它是否适用于所有 dbms(至少在 Postgres 中有效),但您可以尝试:
SELECT
timestamp,
DENSE_RANK() OVER(PATITION BY date_trunc('day', timestamp)
ORDER BY timestamp) as timestamp_order
FROM table
date_trunc
从您的时间戳中提取日期,排名为您提供
推荐阅读
- javascript - 如何在根路径之后获取所有参数
- assembly - MIPS 左加载字 (LWL) 和右加载字 (LWR) 指令有什么作用?
- python - 审查后如何对拉取请求应用修复 - 正确的方法
- android - 如何在android的应用程序中使用更多的API
- javascript - 我正在将多个文件和 id 从角度上传到节点服务器,但我收到来自服务器的错误请求错误
- php - 如何以日期时间格式 PHP 获取当前时间?
- r - 如何选择出现在多个组中的个人?
- jenkins - 无法从浏览器访问詹金斯
- c# - 如何根据 XAML 中的 Binding 和 Property 设置多个条件?
- html - 如何证明 flex 容器中的空 div 是合理的