Group By 分組並取第一條資料

2021-09-27 10:34:52 字數 1237 閱讀 4757

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 使用開窗函式。根據序號取數即可

語法:

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

group by分組取組內第一條

舉個例子 student表 select from student id name age gender 1 張三丰 16 12 滅絕師太 17 03 掃地僧 18 14 楊逍 19 1按照gender進行分組,獲取每個組內年齡最大的,很明顯gender為1的age應該是19,但是事實卻不是 sel...

Oracle分組,取每個分組的第一條資料

最近有個有個業務需求 springboot專案集合mybatis 需要查詢分組後,取每組的第一條資料 oracle資料庫 可以在業務 中實現,但是過於繁瑣,後來查閱oracle的函式,得出僅僅在sql中即可實現,非常簡潔,簡化 sql如下 select from select t user.row ...

排序後分組取每個分組的第一條資料

select p1.from select from table p0 where p0.種類編號 in 10066656,10115244 order by p0.asc,p0.主鍵id desc limit 1000000 p1 group by p1.種類編號 因為group by無法放到or...