SQL实现根据字段对表分组,并对每组进行排序取第一条数据


一、ROW_NUMBER()

ORCLE中,ROW_NUMBER() 为排名函数,负责对返回结果编号;over()为分析函数,更加()中内容返回多个结果集;

ROW_NUMBER () OVER (PARTITION BY ... ORDER BY ...)

二、SQL实现

假设存在表TABLE_A 和TABLE_B ,需要对TABLE_A中的kind字段进行分组,并对分组按照kind_num排序,并取得每个分组的第一条数据,得到结果集S;再对结果集S根据TABLE_B的ID筛选ID相同的数据,SQL设计如下:

SELECT
	*
FROM(
	SELECT
		*
	FROM(
		SELECT
			ROW_NUMBER() OVER(PARTITION BY KIND 
			ORDER BY KIND_NUM DESC) AS NEW_INDEX,*
		FROM
			TABLE_A)
	WHERE NEW_INDEX = 1) AS A,
	TABLE_B AS B
WHERE
	A.ID = B.ID;
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐