oracle中的每周最大计数记录

用户2862073

表测试具有列 id、created_date、sal 和如下所示的数据:

ID 创建日期
1 2021 年 1 月 20 日 5000
2 2021 年 1 月 20 日 6000
3 2021 年 1 月 19 日 4000

我们每个日期都有这样的数据。

我使用以下查询选择每天的记录数:

select count(*) ,create_date from test
group by create_date desc
order by 2 desc;

我想要每周最大记录数的输出:

数数(*) 创建日期
500 20 - 2021 年 1 月
600 10 - 一月 - 2021
300 1 - 一月 - 2021

请建议。

像这样。

大力水手

您可以使用truncdate 到 iso week 并使用如下两级分组:

Select max(cnt) as max_cnt, 
       trunc(create_date,'IW') as week_start_date
  From
    (select count(*) as cnt, 
            create_date
       from test
      Group by create_date )
group by trunc(create_date,'IW') 
order by 2 desc;

如果您还想要日期,那么您需要使用分析函数作为 dolows:

Select * from
     (select count(*) as cnt, 
            create_date,
            Row_number() over (partition by trunc(create_date,'IW') 
                               order by count(*) desc) as rn
       from test
      Group by create_date) t
Where rn = 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章