oracle開窗函式

2021-07-26 02:58:37 字數 898 閱讀 1929

1.-- 使用row_number分頁,查詢第1-10條資料

select t.custid,t.companyname,t.address,t.city from 

(select row_number() over(order by custid) as rownum,custid,companyname,address,city from sales.customers

) as twhere t.rownum between 1 and 10

2.預設值應用

update t_activity set mingroupcount =(select max(id)+1 from t_activity) where id=1

直接取最大值:——也可以排名第一的就是預設值

select id, case when id= (max(id) over()) then '預設' else '非預設' end as sdsdf from t_brand

order by id desc

分組取預設值:——本質是分組排序

select t.pid,t.id,t.name,t.rk,case when t.rk=1 then '預設' else '非預設' end as paixu from 

(select rank() over(partition by pid order by id desc) rk,a.id,a.pid,a.name from  t_product a) t

where t.rk<=5;

where可以去掉,但是預設值不能合併,合併了**很長。

select t.*, t.rowid,rank() over (partition by t.classid order by t.score,t.classid) from tablename t

rank 開窗函式 排序類開窗函式

1,row number over 排序,連續 select score,row number over from sc 按原始 的成績順序進行排序 原始 成績順序 先將分數從大到小排序,分數相同,排名不同 select score,row number over order by score fr...

oracle中的開窗函式理解

開窗函式指定了分析函式工作的資料視窗大小,這個資料視窗大小可能會隨著行的變化而變化,舉例如下 over order by salary 按照salary排序進行累計,order by是個預設的開窗函式 over partition by deptno 按照部門分割槽 over order by sa...

開窗函式簡介

比如我們想查詢每個工資小於5000元的員工資訊 城市以及年齡 並且在每行中都顯示所有工資小於5000元的員工個數,執行下面的sql語句 這個語句顯然是錯誤的,因為count 是聚合函式,然後fname和fage欄位沒有包含分組裡面。那麼,這樣寫呢?sql view plain copy select...