SQL server 分組後每組取出任意一行

2022-01-12 15:12:34 字數 1061 閱讀 6228

資料來源:

insert into [dbo].[dept] ([id], [code], [name]) values (n'1', n'hex_1', n'張三')

gogo

insert into [dbo].[dept] ([id], [code], [name]) values (n'2', n'hex_2', n'lisi')

gogo

insert into [dbo].[dept] ([id], [code], [name]) values (n'3', n'hex_3', n'wangwu')

gogo

insert into [dbo].[dept] ([id], [code], [name]) values (n'4', n'hex_1', n'zhangsan')

gogo

insert into [dbo].[dept] ([id], [code], [name]) values (n'5', n'hex_2', n'里斯')

gogo

insert into [dbo].[dept] ([id], [code], [name]) values (n'6', n'hex_3', n'王五')

gogo

insert into [dbo].[dept] ([id], [code], [name]) values (n'7', n'hex_3', n'def')

業務:根據code 分組然後取出每組中的任意一行

select *from(

select

*, row_number () over (

partition by code

order by

code desc

) rowid

from

dept

) twhere

rowid = 1;

使用 partition by   : 對多行資料分組後排序取每個產品的第一行資料

得到結果:

sql server 分組後,取每組前1條資料

sql 排名開窗函式 row number dense rank rank ntile屬於排名函式。排名開窗函式可以單獨使用order by 語句,也可以和partition by同時使用。partition by用於將結果集進行分組,開窗函式應用於每一組。oder by 指定排名開窗函式的順序。在...

sql server 分組,取每組的前幾行資料

sql中group by後,獲取每組中的前n行資料,目前我知道的有2種方法 比如有個成績表 裡面有欄位學生id,科目,成績。我現在想取每個科目的頭三名。1.子查詢 select from score s where studentname in select top 3 studentname fr...

sql server 分組,取每組的前幾行資料

sql中group by後,獲取每組中的前n行資料,目前我知道的有2種方法 比如有個成績表 裡面有欄位學生id,科目,成績。我現在想取每個科目的頭三名。1.子查詢 select from score s where studentname in select top 3 studentname fr...