分組求TOP N記錄
例項:
有Chinese, math, Music三科的成績,求每科成績前3(或前2或前1)名。
drop table #tmp_score
go
create table #tmp_score
(
ScoreID int primary key,
ClassName varchar(10),
StudentName varchar(10),
Score decimal(5, 2)
)
insert into #tmp_score
select 1, 'Chinese', 'Jerry', 70
union all
select 2, 'Math', 'Jerry', 72
union all
select 3, 'Music', 'Jerry', 81
union all
select 4, 'Chinese', 'Albert', 90
union all
select 5, 'Math', 'Albert', 80
union all
select 6, 'Music', 'Albert', 85
union all
select 7, 'Chinese', 'Lewis', 95
union all
select 8, 'Math', 'Lewis', 91
union all
select 9, 'Music', 'Lewis', 88
union all
select 10, 'Chinese', 'Tom', 89
union all
select 11, 'Math', 'Tom', 83
union all
select 12, 'Music', 'Tom', 86
go
select * from #tmp_score a
where ScoreID in
(
select top 3 ScoreID from #tmp_score
where ClassName = a.ClassName
order by Score desc
)
order by ClassName asc, Score desc
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-1012153/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Laravel 分組獲取最新記錄Laravel
- MySQL 分組後取最新記錄MySql
- 在MySQL中,如何實現Top N及M至N段的記錄查詢?MySql
- MySQL分組排序取前N條記錄 以及 生成自動數字序列 的SQLMySql排序
- MySQL學習記錄--分組與聚集MySql
- SQL 分組排序取最新一條記錄SQL排序
- [MySQL] 分組排序取前N條記錄以及生成自動數字序列,類似group by後 limitMySql排序MIT
- oracle分組查詢獲得組的最大值記錄Oracle
- MySQL分組後,取出每組最新申請的一條記錄MySql
- SQL 單表多條記錄分組查詢分頁程式碼SQL
- MySQL 分組排序後 → 如何取前N條或倒數N條MySql排序
- Teradata 之top n與sample n
- POJ 2442-Sequence(優先佇列-m組n個數每組取一個求n個最小值)佇列
- C4top-N個數求和 (分數求和模擬)
- TOP N 查詢 SQLSQL
- rownum—top-N分析
- MySql先分組統計總記錄數,再獲取記錄數中的最大值MySql
- OWASP Top 10關鍵點記錄
- MySQL 多表分組後獲取每一組的時間最大的那條記錄MySql
- SQL根據分組求連續範圍SQL
- python-進階教程-根據欄位將記錄分組Python
- 記錄分庫分表的文章
- K480N 安裝黑蘋果記錄蘋果
- MySQL分組查詢後獲取前N條資料MySql
- 面試中被問到一組有序序列(從小到大),求這組序列中的前n個面試
- record:記錄(帶名元組)
- 實時監控.NET Core請求次數:建立記錄最近5分鐘的請求,輕鬆可靠
- 如何在不同的資料平臺取前百分之N的記錄?
- 遞迴和非遞迴分別實現求n的階乘遞迴
- 7-34 PTA C語言--求分數序列前N項和C語言
- 不同資料庫限制取前N條記錄資料庫
- 使用Oracle分析函式隨機抽取N條記錄Oracle函式隨機
- 挺有意思:PHP 將N秒內連續的記錄視為一條記錄PHP
- SpringBoot記錄HTTP請求日誌Spring BootHTTP
- 使用中介軟體記錄Laravel慢請求Laravel
- 組合語言-學習記錄(二)組合語言
- 物料主記錄的組織結構
- MAKT 物料組 變更記錄表