Oracle中的row_number()over()函式
最近要實現一個功能,頭疼了半天,最終使用這個函式解決了
問題:
一個年級表
一個學生表
實現效果:
實現sql:
SELECT * FROM T_CLASS AA LEFT JOIN ( SELECT * FROM ( SELECT STU_CLASS_ID , STU_AGE , ROW_NUMBER() OVER (PARTITION BY STU_CLASS_ID ORDER BY STU_AGE DESC) AS NUM FROM T_STU ) TT WHERE TT.NUM = 1 ) BB ON AA.CLASS_ID = BB.STU_CLASS_ID
最後出現的結果就是預期效果,此方案適用與Oracle.
--僅以筆記記錄工作中遇到的問題及解決方案
相關推薦
Oracle中的row_number()over()函式
最近要實現一個功能,頭疼了半天,最終使用這個函式解決了 問題: 一個年級表 一個學生表 實現效果: 實現sql: SELECT * FROM T_CLASS AA LE
Oracle中rank() over, dense_rank(), row_number() 的區別
size oracl 結果集 title 如果 str top () course 摘自:http://www.linuxidc.com/Linux/2015-04/116349.htm Oracle 中 rank() over, dense_rank(), row_num
Oracle ROW_NUMBER() OVER()函式的實際場景使用
前言 最近開發的系統中有個線上諮詢功能。學生在前臺提交諮詢資訊,教師可以登入後臺回覆諮詢。該功能設計是直接使用一張表,使用是否開始標識該條記錄是否是諮詢的開始,然後使用一個會話id標識是屬於一次諮詢,根據建立時間排序,最後就像聊天一樣。 後來遇到一個需求,就
oracle的row_number() OVER (ORDER BY COL2 asc)和row_number() OVER (PARTITION BY COL1 ORDER BY COL2)的用法
acl finish from part .cn nbsp 計算 article ins 轉自:https://jingyan.baidu.com/article/9989c74604a644f648ecfef3.html SELECT ROW_NUMBER() OVE
oracle的row_number()over 、rank()over和dense_rank()over這三種分析函數(轉)
from 聚合 數值 空值 cor net 排名 sel () 假設現在有一張學生表student,學生表中有姓名、分數、課程編號,現在我需要按照課程對學生的成績進行排序。 select * from student 1. rank over ()可以實現對學生排名,特點
ROW_NUMBER() OVER()函式用法;(分組,排序),partition by (轉)
1、row_number() over()排序功能: (1) row_number() over()分組排序功能: 在使用 row_number() over()函式時候,over()裡頭的分組以及排序的執行晚於 where group by order
Oracle中的常用函式
1、數值型常用函式 函式 返回值 樣例 顯示 ceil(n) 大於或等於數值n的最小整數 select ceil(10.6) from dual
db2中left()函式和right()函式對應oracle中的substr()函式
DB2 LEFT、RIGHT函式 語法:LEFT(ARG,LENGTH)、RIGHT(ARG,LENGTH) LEFT、RIGHT函式返回ARG最左邊、右邊的LENGTH個字串,ARG可以是CHAR或BINARY STRING。 eg:
ROW_NUMBER() OVER()函式用法詳解 (分組排序 例子多)
語法格式:row_number() over(partition by 分組列 order by 排序列 desc) row_number() over()分組排序功能: 在使用 row_number() over()函式時候,over()裡頭的分組以及排序的執行晚於 wher
SQLServer實現Oracle中的translate函式
在看SQLCOOKBOOK的時候,裡面涉及到提取純英文或者提取純中文,ORACLE因為有translate函式的關係可以很方便的進行剔除。但是放到SQLSERVER中,總會提及沒有translate函式所以無法實現。最後煩了,思考了一下自己寫了一個出來 本來考慮直接一個個replace就行了,後
Oracle中的substr()函式 詳解及應用
1)substr函式格式 (俗稱:字元擷取函式) 格式1: substr(string string, int a, int b); 格式2:substr(string string, int a) ; 解釋: 格式1:  
Oracle中的-------NVL( )函式
1.NVL( )函式 NVL函式的格式如下: NVL(expr1,expr2) 含義是:如果oracle第一個引數為空那麼顯示第二個引數的值,如果第一個引數的值不為空,則顯示第一個引數本來的值。 2 NVL2( )函式 NVL2函式的格式如下: NVL2(expr1,expr2,
Oracle中的substr()函式和INSTR()函式
1)substr函式格式 (俗稱:字元擷取函式) 格式1: substr(string string, int a, int b); 格式2:substr(string string, int a) ; 解釋: 格式1:  
Oracle中的日期函式
日期函式: 重點掌握兩個函式: to_date() 和 to_char() 功能類似於 java中 SimpleDateFormat的 parse() 和 format()方法 , 用於 日期資料 和 字元資料的 互轉 轉換過程中需要指定 日期格式 格式: ‘y
Oracle 中的開窗函式
Oracle 中的開窗函式 over 函式 SQL中有經常跟over()開窗函式搭配的是row_number(),一般用於去重或者根據某些欄位分組(partition by)然後再進行排序(order by )得到最終的資料。 rank () over() 和 dence_ran
Oracle中case when函式和decode函式
1、case when函式: select ename,case deptno when 10 then 'ACCOUNTING' when 20 then 'RESEARCH' else 'SALES' end from emp;&n
oracle之percent_rank() over()函式和PERCENTILE_CONT() within group()over()函式詳解
建立一個臨時表 create table EMP ( EMPNO NUMBER(4) not null, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL
oracle中的替換函式replace和translate函式
translate函式 create or replace procedure PRO_CAR_LOTTORY_PRODUCT(return_code out varchar2) is exe exception; num
mysql分組排序取最大值所在行,類似hive中row_number() over partition by
如下圖, 計劃實現 :按照 parent_code 分組, 取組中code最大值所在的整條記錄,如紅色部分。(類似hive中: row_number() over(partition by)) select c.* from ( select a.*, (@i := ca
Oracle中的時間函式用法(to_date、to_char)
一、24小時的形式顯示出來要用HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; 二、