22.3.31 WILサブクエリ&ビューとグループ/ウィンドウ関数
サブクエリ
操作によるサブクエリの分類
簡単に書けば!プライマリ・クエリーの列(内容)は、サブクエリーで使用するかどうかによって分類されます.
サブクエリは、返されたデータ型に基づいて分類されます。
1.1行サブクエリ
サブクエリの結果は、1行の比較演算子(=、<、>、<=、>=)とともに使用されるローを返します.
2.マルチラインサブクエリ-EXISTSはまだ使い慣れていない!
サブクエリの結果は、複数行を返し、複数行比較演算子(IN、ALL、ANY、EXISTS)とともに使用できます.
EXISTS例
SELECT name
FROM employee a
WHERE EXISTS (
SELECT id
FROM employee b
WHERE b.salary >= 10000 AND a.department_id = b.department_id
)
3.複数列サブクエリ
サブクエリの結果は、複数のカラムを返し、メインクエリの条件と同時に比較します.
複数の列の例
SELECT name, salary
FROM employee
WHERE (department_id, salary) IN
(
SELECT department_id, max(salary)
FROM employee
GROUP BY department_id
);
スカリーのサーブ照会-私にとって難しい概念なら、よく理解してください。
1つのプロパティがあり、1行のクエリーのみが返されます.
SELECTセクション、WHEREセクション、HAVINGセクションで使用可能
スカラークエリーの使用例
-- salaries 테이블에서 직원 번호와 한 직원의 평균 급여를 중복없이 출력해보세요.
select distinct salaries.emp_no, (
select avg(salary)
from salaries as s
where salaries.emp_no = s.emp_no
group by emp_no
) as avg_salary
from salaries;
ビュー(VIEW)
ビューは、他のテーブルから派生したテーブルであり、物理的にデータを格納するのではなく、論理的に格納され、ビューを使用するクエリーはDBMSがビュー定義に基づいてクエリーを書き換えることによって実行されます.
ビューのフィーチャー
CREATE (OR REPLACE) VIEW view_name AS
(
SELECT column1, column2
FROM table_name
WHERE condition
);
グループ関数とウィンドウ関数
ウィンドウ関数(Window function)、集約関数(Aggregate function)、およびグループ関数(Group function)は、主にデータ解析に使用されます.
ウィンドウ関数
等級統計等行と行の関係を定義する関数-OVERを区別する必要があります
SELECT WINDOW FUNCTION OVER([ARTITIONBYcolumn][ORDER BY節][WINDOWN節])FROM表;
1.ランク関数
お客様)RANK()OVER(ORDER BY salary DESC)FROM employee;
2.一般統計関数
例)AVG(Salry)OVER(PARTION BY department id)FROM employee;
従来の統計関数AVG()、MIN()、MAX()、SUM()などは、GROUP BY構文を必要とせずに使用することができる.
3.グループ内の行順関数
例)各部門で最も給料の高い人
FIRST_VALUE(salary) OVER(PARTITION BY department_id ORDER BY salary ROWS BETWEEN UNBOUNDED PROCEDING AND UNBOUNDED FOLLOWING)
例)従業員番号の前に従業員名を印刷する
LAG(name, 1) OVER(ORDER BY id)
4.グループ内比率関数
例)従業員の合計報酬の各行あたりの割合
RATIO_TO_REPORT(salary) OVER() as total_salary
例)賃金純価値自己の割合
PERCENT_RANK() OVER(ORDER BY salary DESC) AS percent_rank
例)給与に基づいて従業員を3つのグループに分ける
NTILE(3) OVER (ORDER BY salary DESC) as ntile
グループ関数
データ全体の統計だけではありません.一部のデータの小計と中継を提供する
CUBE(d.name, j.name) == ROLL UP(d.name,j.name) UNION ROLL UP(j.name,d.name) ?? -> ROLLUPとCUBEの関係を知る
Reference
この問題について(22.3.31 WILサブクエリ&ビューとグループ/ウィンドウ関数), 我々は、より多くの情報をここで見つけました https://velog.io/@jk05018/22.03.31-WIL-서브쿼리-뷰-그룹윈도우-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol