首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 分組取每組第一筆資料:RANK() OVER 寫法

     編輯:Oracle 教學

Oracle 分組取每組第一筆資料:RANK() OVER 寫法

需求:依 documentno 分組,取 time 最大(最新)的一筆。

範例資料

NO   TIME      NAME
1001 20141226 zhangsan
1001 20141227 lisi
1002 20141228 wangwu
1002 20141229 zhaoliu

SQL 寫法

SELECT * FROM (
  SELECT RANK() OVER (PARTITION BY documentno ORDER BY time DESC) r, a.*
  FROM test a
) WHERE r = 1;

結果

NO   TIME      NAME
1001 20141227 lisi
1002 20141229 zhaoliu

補充說明

  • RANK() 同分同名次,若要嚴格取一筆可用 ROW_NUMBER()。
  • PARTITION BY 定義分組欄位,ORDER BY 定義組內排序。
  • 適用於「各群組最新/最舊/最大/最小」等常見需求。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved