天天看點

Group By 分組并取第一條資料

MYSQL GROUP BY 

mysql  我使用排序進行篩選,保證分組、排序之後我的第一條資料就是我要的資料

SELECT  a.code , 
	a.type AS 班型 ,MAX(a.num)
FROM
	(
		SELECT
			*
		FROM
			cent_ylb_numclass
		GROUP BY
			CODE,
			type
		ORDER BY
			CODE,
			num DESC
	) AS a
GROUP BY
	`code`
           

ORACLE GROUP BY 

oracle 使用開窗函數。根據序号取數即可

文法:
ROW_NUMBER() OVER(PARTITION BY COLUMN1 ORDER BY COLUMN2 [desc])
根據column1分組,根據column2排序
           

此次我們需要根據教師編碼code進行分組,教師編碼()code)和教師課程分組數(count(課程分組))降序排序

我們需要确定某個教師教的最多的課程是哪一個

SELECT
	localtable.教師編碼 as 教師編碼,localtable.課程  as 分組
FROM
(SELECT
			tablebiao.教師編碼 as 教師編碼,
			tablebiao.教師姓名 as  教師姓名  ,
			tablebiao.課程分組 as 課程,
			COUNT(tablebiao.課程分組) AS num,
			row_number () over (
				PARTITION BY tablebiao.教師編碼,
				tablebiao.教師姓名
			ORDER BY
				tablebiao.教師編碼,
				COUNT(tablebiao.課程分組) DESC
			) AS rn
		FROM
			tablebiao
		GROUP BY
			tablebiao.教師編碼,
			tablebiao.教師姓名,
			tablebiao.課程分組
		ORDER BY
			tablebiao.教師編碼,
			COUNT(tablebiao.課程分組) DESC
)  localtable
WHERE
	localtable.rn = 1
           

如有更好的實作方法,或者指導意見請聯系微信c243126035