sql分组统计后分别显示前几条记录
采购类别客户订货总额密封材料a1141密封材料a22242密封材料a3124纱窗b1490纱窗b2585纱窗b345五金配件d1540五金配件d254五金配件d3645如...
采购类别 客户 订货总额
密封材料 a1 141
密封材料 a2 2242
密封材料 a3 124
纱窗 b1 490
纱窗 b2 585
纱窗 b3 45
五金配件 d1 540
五金配件 d2 54
五金配件 d3 645
如何用一条sql语句每个分类的前2条记录 展开
密封材料 a1 141
密封材料 a2 2242
密封材料 a3 124
纱窗 b1 490
纱窗 b2 585
纱窗 b3 45
五金配件 d1 540
五金配件 d2 54
五金配件 d3 645
如何用一条sql语句每个分类的前2条记录 展开
2个回答
展开全部
首先,该问题对应的SQL如下
select 采购类别,客户,订货总额
from (select 采购类别,客户,订货总额,
row_number() over(partition by 采购类别 order by 订货总额 desc) rn
from table_name) a
where rn<=2
;
其次,常用数据库比如Oracle和Sqlserver都有特定函数完成分组排序的功能,如果需要显示并列的情况可以用下面另外的2个.
分别有3个类似函数:
row_number() over
这个函数不需要考虑是否并列,哪怕根据条件查询出来的数值相同也会进行连续排名。也是最常用的函数,排序结果类似于1,2,3,4,5
rank() over
查出指定条件后进行一个排名,但是有一个特点。假如是对学生排名,那么实用这个函数,成绩相同的两名是并列。排序结果类似于1,2,2,4,5
dense_rank() over
比较特殊,排序结果类似于1,2,2,3,4
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询