表测试具有列 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 |
请建议。
像这样。
请
您可以使用trunc
date 到 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] 删除。
我来说两句