select concat(t.y1,'-',t.m),t,key1,t.cnt from ( select year(time) y1,month(time) m,key1,count(1) cnt, row_number() over (partition by year(time),month(time) order by count(1) desc) rk from db_search group by year(time),month(time),key1 ) t where t.rk<=1;每段语句是什么意思
时间: 2024-01-12 08:05:11 浏览: 103
解决Oracle没有WM_CONCAT函数.zip
这是一条SQL查询语句,其作用是查询 db_search 表中每个月中搜索次数最多的关键词及其搜索次数,并按年份和月份进行分组。具体分析如下:
1. 子查询:
```
select year(time) y1,month(time) m,key1,count(1) cnt, row_number() over (partition by year(time),month(time) order by count(1) desc) rk
from db_search
group by year(time),month(time),key1
```
该子查询从 db_search 表中查询出每个月中每个关键词的搜索次数,并将结果按年份、月份和搜索次数进行分组,同时使用 row_number() 函数为每个分组中的结果按搜索次数降序排名。
2. 外层查询:
```
select concat(t.y1,'-',t.m),t,key1,t.cnt from (
...
) t where t.rk<=1;
```
外层查询是在子查询的基础上进行的。其中,concat(t.y1,'-',t.m) 将年份和月份合并成一个字符串,t.key1 表示关键词,t.cnt 表示搜索次数。最后的 where t.rk<=1 表示只选取每个月中搜索次数最多的关键词及其搜索次数。
阅读全文