Oracle SQL 查询计数组按时间戳子串

Posted

技术标签:

【中文标题】Oracle SQL 查询计数组按时间戳子串【英文标题】:Oracle SQL query count group by timestamp substring 【发布时间】:2011-04-01 10:07:24 【问题描述】:

给定一个表,其中有一列字符串“timestamps”(yyyyMMddHHmmssSSS 格式),我想对前 8 个字符进行子字符串化,并计算包含该子字符串的行数,并对结果进行分组。

样本数据...

TIMESTAMP
20100802123456123
20100803123456123
20100803123456123
20100803123456123
20100804123456123
20100805123456123
20100805123456123
20100805123456123
20100805123456123
20100806123456123
20100807123456123
20100807123456123

...和预期结果...

SUBSTRING, COUNT
20100802, 1
20100803, 3
20100804, 1
20100805, 4
20100806, 1
20100807, 2

我知道这应该很容易,但我现在运气不好。

【问题讨论】:

如果存储为DATE,则可以使用trunc(date_column) 【参考方案1】:

我没有要测试的数据库,但您似乎正在寻找

select
  substr(timestamp, 1, 8),
  count(*)
from
  my_table
group by
  substr(timestamp, 1, 8);

【讨论】:

我认为这可能会奏效。非常感谢。我试图将 substring() 做为 YMD,然后按 YMD 分组。

以上是关于Oracle SQL 查询计数组按时间戳子串的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:如何执行滚动时间戳窗口组计数,每天产生行

位于其他表中的值之间的计数的 SQL 查询

如果没有记录计数,则显示零 - ORACLE SQL 查询

Oracle SQL 查询列出所有活动用户/模式并给出对象计数

Oracle Toad SQL 查询导致 id 计数不一致

SQL 获取时间戳差异大于 30 时的 id 计数