sql - oracle 中的每周最大计数记录
问题描述
表测试具有列 id、created_date、sal 和如下数据:
ID | 创建日期 | 萨尔 |
---|---|---|
1 | 2021 年 1 月 20 日 | 5000 |
2 | 2021 年 1 月 20 日 | 6000 |
3 | 2021 年 1 月 19 日-1 月 | 4000 |
我们每个日期都有这样的数据。
我使用以下查询选择每天的记录数:
select count(*) ,create_date from test
group by create_date desc
order by 2 desc;
我想要每周输出最大记录数:
数数(*) | 创建日期 |
---|---|
500 | 20-2021 年 1 月 |
600 | 2021 年 1 月 10 日至 1 月 |
300 | 2021 年 1 月 1 日至 1 月 |
请建议。
像这样。
请
解决方案
您可以使用trunc
日期到 iso 周并使用两个级别的分组,如下所示:
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;
如果你还想要日期,那么你需要使用分析函数作为 dollows:
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
推荐阅读
- woocommerce - 如何从 WooCommerce 操作更新订单元数据
- r - GLMM 中的 Gamma 分布
- twitch - 如何在抽搐流聊天中显示所有可用命令?
- python - 遍历odoo 14中的对象
- javascript - 如何在使用 Bootstrap 和 HTML5 填充来自 Google Sheet 的数据的 Google Sheet Apps 脚本中添加“数据列表”
- c# - 如何使用 OleDbDataAdapter 在 C# 中获取所有 Excel 工作表数据
- r - 在我的 rstudio 上用我的窗口笔记本电脑安装 tidyr 包
- python - Pandas:无法将数据透视表信息插入到不同的工作表中
- laravel - 使用 Axios 发出 POST 请求时 CSRF 令牌不匹配
- spring - Spring Kafka Producer 阻塞 http 线程直到 Kafka 线程完成