Oracle 中帶和不帶KEEP 的PARTITION BY
在Oracle 中對資料進行分區時,有兩個主要選項可用: PARTITION BY 和KEEP。這兩個選項都可以用於將資料分組為較小的子集,但它們對結果資料有不同的影響。
PARTITION BY
PARTITION BY 子句用來分割基於一個或多個欄位將資料表分成較小的分割區。每個分區中的資料與其他分區中的資料分開儲存。這可以提高某些類型查詢的效能,例如按特定列值過濾資料的查詢。
例如,以下查詢使用 PARTITION BY 子句根據 deptno 將 empl 表劃分為多個分區列:
SELECT empno, deptno, sal, MIN(sal) OVER (PARTITION BY deptno) AS "Lowest", MAX(sal) OVER (PARTITION BY deptno) AS "Highest" FROM empl;
此查詢將傳回每個部門的最低和最高工資。每個部門的資料將儲存在單獨的分區中,這將提高按部門過濾資料的查詢的效能。
KEEP
KEEP 子句用來指定每個分割區中保留哪些行。 KEEP 子句可以與 PARTITION BY 子句或 DISTINCT 子句一起使用。
與 PARTITION BY 子句一起使用時,KEEP 子句指定要保留每個分割區的哪些行。例如,以下查詢使用KEEP 子句僅保留每個分區的第一行:
SELECT empno, deptno, sal, MIN(sal) OVER (PARTITION BY deptno) AS "Lowest", MAX(sal) OVER (PARTITION BY deptno) AS "Highest" FROM empl KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno);
此查詢將返回每個部門的最低和最高工資,但只會返回第一行從每個分區。這對於需要傳回有限行數的查詢,或者需要以特定順序傳回資料的查詢非常有用。
PARTITION BY 和KEEP 之間的區別
PARTITION BY 和KEEP 之間的主要區別在於PARTITION BY 將資料分割為較小的分區,而KEEP 指定要保留哪些行每個分割區。 PARTITION BY 可用於提高某些類型查詢的效能,而 KEEP 可用於限制查詢傳回的行數或以特定順序傳回資料。
以上是Oracle 資料分割區中的「PARTITION BY」和「KEEP」子句有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!