〇×〇站

个人博客,佛系更新

mysql分组排序并取各分组前几个数据

  • Pluto
  • 2023-03-24 22:00:00
  • 960
  • 转自https://blog.csdn.net/qq_41934680/article/details/120816081

    在开发过程中,会遇到分组后取每一组排名前几的信息,具体实现的sql如下:

    SELECT
    	a.id,
    	a.NAME '姓名',
    	a.achievement '成绩',
    	a.category '类别' 
    FROM
    	`user` a;
    

    图1

    一、需求

    category分组,查出achievement最高的每组的前三名

    SELECT
    	a.id,
    	a.NAME '姓名',
    	a.achievement '成绩',
    	a.category '类别' 
    FROM
    	`user` a 
    WHERE
    	3 > ( 
    	SELECT COUNT(*) FROM `user` b 
    	WHERE b.category = a.category 
    	AND b.achievement > a.achievement 
    	) 
    ORDER BY
    	a.category,
    	a.achievement DESC
    

    图2

    二、SQL解析

    3 > 目的是获取前三条数据 where b.category = a.category 目的是确定分组字段 b.achievement > a.achievement 排序字段

    分类:
  • 代码
  • 标签:
  • mysql