groupby取出前十名
时间: 2023-08-23 22:07:58 浏览: 81
在数据库查询中,使用GROUP BY可以对数据进行分组,但是返回的结果集中,每组只占结果集的一行。如果需要查询每一组的前十名,可以使用以下的存储过程方法:
```
delimiter //
drop procedure if exists MyGroup//
CREATE PROCEDURE MyGroup()
begin
declare num int default 0;
declare i int default 0;
set num = (select count(distinct settle_date) from tbl_files);
while i < num do
select file_nm, file_id, file_len, settle_date
from tbl_files
where settle_date = (select settle_date
from tbl_files
group by settle_date
limit i,1)
order by file_len DESC
limit 10;
set i=i+1;
end while;
end//
delimiter ;
```
这个存储过程会先计算出不重复的settle_date的数量,并使用循环从0到num-1的范围内查询每个settle_date对应的前十名记录。在每次查询中,根据settle_date进行筛选,并按照file_len字段降序排序,然后限制结果集只返回前十名记录。通过循环迭代,最终可以得到每一组的前十名记录。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [对group by出来的每一组取前十名](https://blog.csdn.net/u011866460/article/details/42835837)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文