22.3.31 WIL集約演算子&階層クエリー
Standard SQL
かんけいだいすう
リレーショナル・データベースから必要な情報を取得する基本演算セット
集合演算子
2つ以上のテーブルの結合を使用しない、関連するデータをクエリーする方法です.
テーブル内のSELECTのカラム数と各カラムのデータ型は、テーブル間で互いに互換性がある必要があります.
UNION(パラレル)
UNIX用の列数とデータフォーマットを一致させ、集計後にテーブルから重複データを削除する必要があります.
*UNIXは、テーブルのマージ時にソートされます.
UNION ALL
UNIXとは異なり、重複除外に整列しない特性を有する
INTERSECT(交差)
2つのテーブルの重複部分を抽出する演算;抽出後の重複結果を除去する
2つのテーブルから重複する部分を抽出する演算->抽出後の重複除外演算
階層型クエリー
テーブルに階層化されたデータがある場合は、データを表示します.
階層データとは?
親と子を含むデータを同じテーブルに階層化
例)従業員-管理者
階層クエリーの例
CTE(Common Table Expression)を使用して再帰を呼び出す
WITH RECURSIVE CTE(member_id, manager_id, lvl)
AS (
SELECT member_id, manager_id, 0 AS lvl
FROM MEMBER
WHERE manager_id IS NULL
UNION ALL
SELECT a.member_id, a.manager_id, b.lvl + 1
FROM MEMBER a
JOIN CTE AS b
ON a.manager_id = b.member_id
)
// 이 전체 쿼리가 재귀적으로 돌면서 쿼리가 한번 돌면은 CTE 테이블에 저장이 된다. -> 다시 재귀 -> CTE 테이블에 변화가 없을때 재귀가 끝난다.
// CTE를 Recursive하게 변화시키며 저장
SELECT member_id, manager_id, lvl
FROM CTE
ORDER BY member_id, lvl;
自動接続は、階層クエリーにも使用できます.例
Select a.column1, b.column2
from table as a, table as b
Where a.column1 = b.column2
셀프조인 예시
Select name, salary
from EMPLOYEE
Where (department_id, salary) in (
select department_id, max(salary)
from EMPLOYEE
group by department_id
);
階層検索のような状況は、無知というより、理解と使用でしょう.Reference
この問題について(22.3.31 WIL集約演算子&階層クエリー), 我々は、より多くの情報をここで見つけました https://velog.io/@jk05018/22.03.31-WIL-집합연산자-계층적-질의テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol