- order by
排序, desc
降序,asc
升序
日期可以直接+1
- rank,dense_rank,row_number
名稱 |
區(qū)別 |
rank |
排序的方式是前邊有多少人就是多少名壕翩,按照實體排名 |
dense_rank |
稠密的排序方式碎罚,只考慮去重后的成績排名 |
row_number |
就是行號欠拾,可以用于分頁 |
名稱 |
區(qū)別 |
group by |
分組后的數(shù)據(jù)只能計算出組內(nèi)一個統(tǒng)計數(shù)據(jù)梭域,而不能保存組內(nèi)的每一條數(shù)據(jù)石抡,比如計算平均值轻黑,總值糊肤,最大值,最小值 |
partition by |
之后的數(shù)據(jù)依舊保存著每一條數(shù)據(jù)氓鄙。他的分組效果類似于將分組后的數(shù)據(jù)排列在一起 |
- 去除重復(fù)
按照重復(fù)列分組馆揉,取出每一個分組的一個唯一標(biāo)識,然后刪除所有不在這個列表里的行數(shù)據(jù)抖拦。
drop table where id not in
(select min(id) group by (repeat) from table)
//
(select first_value(id) group by (repeat) from table)
名稱 |
區(qū)別 |
lag |
lag(列名,n,default),前n個升酣,over內(nèi)必須有排序 |
lead |
lead(列名,n,default),后n個舷暮, over內(nèi)必須有排序 |
FIRST_VALUE |
可以是分組排序后的第一個值。 |
LAST_VALUE |
可以是分組排序后的最后一個值噩茄。 |
NULLS FIRST |
null 放在第一個 |
NULLS LAST |
放最后一個 |
NTILE(n) |
將數(shù)據(jù)分成n份 |
//通過部門分組下面,通過salary排序,然后得到組內(nèi)行號,重命名為rown
row_number() over(PARTITION BY e.department_id ORDER BY e.salary) rown
//排名
rank() over(PARTITION BY e.department_id ORDER BY e.salary) rown
//lag 升序排序后绩聘,比當(dāng)前溫度低的一個沥割,溫度對應(yīng)的日期。
lag(date,1,null) over (order by temperature asc) as beforeDate
// 將null放在最后一個
RANK() OVER(PARTITION BY E.DEPTNO ORDER BY E.SAL NULLS LAST)
//按分位數(shù)凿菩,最后通過分位數(shù)的字段名机杜,篩選到自己想要的數(shù)據(jù)
//若只取前三分之一,all_cmp=1即可衅谷,若只取中間三分之一椒拗,all_cmp=2即可
NTILE(3) OVER(ORDER BY E.SAL DESC NULLS LAST) ALL_CMP