Oracle 關鍵字、高級函數的使用


1.序列、唯一標識

  查詢時,可以添加遞增序列 rownum

  表的數據每一行都有一個唯一的標識 rowid

  

 2.函數

  單行:查詢多條數據

    如:to_date()

  多行:查詢總結數據,一般用於group by

    如:sum()

3.去重 distinct

  select distinct  from tablename

4.分區 partition

  select tenantcode,row_number() over(partition by tenantcode order by tenantcode, brandcode, storecode ) groupid
  from tablename

    

  若要分區篩選出id=1的,可以

select * from(
select tenantcode,row_number() over(partition by tenantcode order by tenantcode, brandcode, storecode) groupid
from tablename
)
where groupid=1

   row_number為直接排序,還可以替換成以下函數

    rank():  跳躍排序,如果有兩個第一級時,接下來就是第三級。
    dense_rank():  連續排序,如果有兩個第一級時,接下來仍然是第二級。

5.行列轉換

  模擬表

With t as (
Select 1 id,'桃子' name,100 q1,200 q2,300 q3,400 q4 from dual
Union
Select 2 id,'蘋果' name,111 q1,222 q2,333 q3, 444 q4 from dual
Union
Select 3 id,'西瓜' name,123 q1,234 q2,345 q3,456 q4 from dual
)

  

  列轉行

Select * from t unpivot(nums for jidu in (q1,q2,q3,q4)) order by id;

  

  行轉列

With t as (
Select 1 id,'桃子' name,100 q1,200 q2,300 q3,400 q4 from dual
Union
Select 2 id,'蘋果' name,111 q1,222 q2,333 q3, 444 q4 from dual
Union
Select 3 id,'西瓜' name,123 q1,234 q2,345 q3,456 q4 from dual
),
bb as(
Select * from t unpivot(nums for jidu in (q1,q2,q3,q4)) order by id
)

Select * from bb pivot(max(nums) for jidu in ('Q1' Q1,'Q2' Q2,'Q3' Q3,'Q4' Q4)) --這里的max是如果有多行,選擇最大,比如桃子有兩個Q1

  

 6.null值置頂或墊底

select * from langmap order by lang4 nulls first/last

 6.存在則更新,不存在則新增

merge into v5_tenant_repair_appl_follow f
using (select '2018111219530688462' ra_id,'test' ra_staffcode from dual) n
on(f.ra_id=n.ra_id)
when matched then
  update set f.ra_staffcode=n.ra_staffcode
when not matched then
  insert values(n.ra_id,n.ra_staffcode)

 7.占比

select a.ra_id,a.ra_charge,
      ratio_to_report(a.ra_charge) over() pct 
from v5_tenant_repair_appl a

  pct表示該行的ra_charge所占比例

  over():可以用參數 partition by [字段] 進行分組,從而查詢分組后ra_charge所占比例

8.選擇第一個非空數據

select coalesce(null,null,1,null) from dual;

9.字節替換

select translate('ab123', 'abcdefg123', '3456789abc') from dual;

  第一個參數:輸入的字符串

  第二個參數、第三個參數:替換規則,字節按順序一一對應替換

  上式代碼結果:34abc


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM