求sql语句:oracle取group后排序靠前的记录

兄弟姐妹帮我教下,求sql语句:oracle取group后排序靠前的记录?

表结构如下:项目、所用物料类别、数量,要求先按项目、物料分组(group by 项目、物料),再取每一组数量最多的5条记录,用oracle的sql语句怎么实现,感谢!
最新回答
▏末夕晴ヽmiss

2024-05-06 06:52:50

SELECT *
FROM (SELECT 项目,物料类别,DENSE_RANK() OVER(PARTITION BY 项目,物料类别 ORDER BY 数量 DESC) NUM
FROM 表)
WHERE NUM <= 5
痴人终久别

2024-05-06 04:42:27

select 项目,所用物料类别,sl from
(select 项目,所用物料类别,sum(数量) sl,rowmun xh from 表名 group by 项目,所用物料类别 order by sl desc) xh<=5;
追问
不行啊,这个语句“select 项目,所用物料类别,sum(数量) sl,rownum xh from 表名 group by 项目,所用物料类别”执行失败,因为group by 语句里不能select rownum
欲往

2024-05-06 01:42:49

select * from
(select 项目,所用物料类别,sum(数量) 总量 from 表 group by 项目,物料 order by 总量)
where rownum<6
追问
这么取出来的结果是总量最多的5条记录,我需要每个group by 的分组取前5条