首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >group-by/聚合日期范围

group-by/聚合日期范围
EN

Stack Overflow用户
提问于 2009-06-18 21:02:54
回答 3查看 298关注 0票数 3

获得了只有一列的表ABC。日期列"created“。所以样本值是这样的;

代码语言:javascript
复制
 created
 2009-06-18 13:56:00
 2009-06-18 12:56:00
 2009-06-17 14:02:00
 2009-06-17 13:12:23
 2009-06-16 10:02:10

我想写一个查询,这样结果就是:

代码语言:javascript
复制
count    created
2        2009-06-18
2        2009-06-17
1        2009-06-16

基本上计算每个日期有多少条目,但忽略时间。

这是在带有Oracle的PL-SQL中。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-18 21:06:06

select count(*), to_char('YYYY-MM-DD', created) from ABC group by to_char('YYYY-MM-DD', created)

票数 2
EN

Stack Overflow用户

发布于 2009-06-18 21:06:06

TRUNC函数返回日期时间的日期。

代码语言:javascript
复制
select trunc(created),count(*) from ABC group by trunc(created)
票数 11
EN

Stack Overflow用户

发布于 2009-06-18 21:45:43

为了完整起见,我将添加一个适用于任意定义的存储桶大小的通用变体:

代码语言:javascript
复制
  SELECT trunc( (created - to_date('2000.01.01', 'YYYY.MM.DD'))
                * 24
              ) / 24
         + to_date('2000.01.01', 'YYYY.MM.DD') theDate
       , count(*)
    FROM Layer
GROUP BY trunc( (created - to_date('2000.01.01', 'YYYY.MM.DD'))
                * 24
              ) / 24
         + to_date('2000.01.01', 'YYYY.MM.DD')
ORDER BY 1;

上面的查询将按小时给出计数;使用小于24的值来获得较大的间隔,或使用较大的值来创建较小的间隔。通过颠倒*和/的位置,您可以使您的存储桶以天为增量(例如,执行“/7”而不是“* 24”将得到每个存储桶一周的存储桶。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1015165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档