SnowConvert AI - Redshift - SELECT INTO¶
説明¶
テーブル、ビュー、ユーザー定義関数から行を返し、新しいテーブルに挿入します。(Redshift SQL 言語リファレンス SELECT ステートメント)
文法構文¶
[ WITH with_subquery [, ...] ]
SELECT
[ TOP number ] [ ALL | DISTINCT ]
* | expression [ AS output_name ] [, ...]
INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table
[ FROM table_reference [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ { UNION | INTERSECT | { EXCEPT | MINUS } } [ ALL ] query ]
[ ORDER BY expression
[ ASC | DESC ]
[ LIMIT { number | ALL } ]
[ OFFSET start ]
詳細情報は以下の各リンクをご参照ください。
FROM 句¶
説明¶
クエリの
FROM
句は、データを選択するテーブル参照(テーブル、ビュー、サブクエリ)をリストします。複数のテーブル参照がリストされている場合は、FROM
句またはWHERE
句で適切な構文を使用して、テーブルを結合する必要があります。結合条件が指定されていない場合、システムはクエリをクロス結合として処理します。(Redshift SQL 言語リファレンス FROM 句)
警告
FROM 句 はSnowflakeで部分的にサポートされています。 オブジェクトのピボット解除 は現在サポートされていません。
文法構文¶
FROM table_reference [, ...]
<table_reference> ::=
with_subquery_table_name [ table_alias ]
table_name [ * ] [ table_alias ]
( subquery ) [ table_alias ]
table_reference [ NATURAL ] join_type table_reference
[ ON join_condition | USING ( join_column [, ...] ) ]
table_reference PIVOT (
aggregate(expr) [ [ AS ] aggregate_alias ]
FOR column_name IN ( expression [ AS ] in_alias [, ...] )
) [ table_alias ]
table_reference UNPIVOT [ INCLUDE NULLS | EXCLUDE NULLS ] (
value_column_name
FOR name_column_name IN ( column_reference [ [ AS ]
in_alias ] [, ...] )
) [ table_alias ]
UNPIVOT expression AS value_alias [ AT attribute_alias ]
サンプルソースパターン¶
入力コード:¶
Redshift¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT
);
INSERT INTO employee(id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
CREATE TABLE department (
id INT,
name VARCHAR(50),
manager_id INT
);
INSERT INTO department(id, name, manager_id) VALUES
(1, 'HR', 100),
(2, 'Sales', 101),
(3, 'Engineering', 102),
(4, 'Marketing', 103);
SELECT e.name AS employee_name, d.name AS department_name
INTO employees_in_department
FROM employee e
INNER JOIN department d ON e.manager_id = d.manager_id;
Results¶
EMPLOYEE_NAME |
DEPARTMENT_NAME |
---|---|
John |
HR |
ホルヘ |
販売 |
クワク |
販売 |
リュウ |
販売 |
マテオ |
エンジニアリング |
ニッキー |
マーケティング |
パウロ |
マーケティング |
リチャード |
マーケティング |
ソフィア |
エンジニアリング |
出力コード:¶
Redshift¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/06/2025", "domain": "test" }}';
INSERT INTO employee (id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
CREATE TABLE department (
id INT,
name VARCHAR(50),
manager_id INT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/06/2025", "domain": "test" }}';
INSERT INTO department (id, name, manager_id) VALUES
(1, 'HR', 100),
(2, 'Sales', 101),
(3, 'Engineering', 102),
(4, 'Marketing', 103);
CREATE TABLE IF NOT EXISTS employees_in_department AS
SELECT e.name AS employee_name, d.name AS department_name
FROM
employee e
INNER JOIN
department d ON e.manager_id = d.manager_id;
Results¶
EMPLOYEE_NAME | DEPARTMENT_NAME |
---|---|
John | HR |
Jorge | Sales |
Kwaku | Sales |
Liu | Sales |
Mateo | Engineering |
Nikki | Marketing |
Paulo | Marketing |
Richard | Marketing |
Sofía | Engineering |
既知の問題¶
既知の問題はありません。
GROUP BY 句¶
説明¶
GROUP BY
句は、クエリのグループ化列を識別します。グループ化列は、クエリがSUM
、AVG
、COUNT
のような標準関数で集約を計算する時に宣言されなければなりません。(Redshift SQL 言語リファレンス GROUP BY 句)
Note
GROUP BY 句 はSnowflakeで完全にサポートされています。
文法構文¶
GROUP BY expression [, ...]
サンプルソースパターン¶
入力コード:¶
Redshift¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT
);
INSERT INTO employee(id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
SELECT
manager_id,
COUNT(id) AS total_employees
INTO manager_employees
FROM employee
GROUP BY manager_id
ORDER BY manager_id;
Results¶
MANAGER_ID |
TOTAL_EMPLOYEES |
---|---|
100 |
1 |
101 |
3 |
102 |
2 |
103 |
3 |
104 |
3 |
1 |
出力コード:¶
Snowflake¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/06/2025", "domain": "test" }}';
INSERT INTO employee (id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
CREATE TABLE IF NOT EXISTS manager_employees AS
SELECT
manager_id,
COUNT(id) AS total_employees
FROM
employee
GROUP BY manager_id
ORDER BY manager_id;
Results¶
MANAGER_ID |
TOTAL_EMPLOYEES |
---|---|
100 |
1 |
101 |
3 |
102 |
2 |
103 |
3 |
104 |
3 |
1 |
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
HAVING 句¶
説明¶
HAVING
句は、クエリが返す中間グループ化結果セットに条件を適用します。(Redshift SQL 言語リファレンス HAVING 句)
Note
Snowflakeでは、 HAVING 句 が完全にサポートされています。
文法構文¶
[ HAVING condition ]
サンプルソースパターン¶
入力コード:¶
Redshift¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT
);
INSERT INTO employee(id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
SELECT manager_id, COUNT(id) AS total_employees
INTO manager_employees
FROM
employee
GROUP BY manager_id
HAVING COUNT(id) > 2
ORDER BY manager_id;
Results¶
MANAGER_ID |
TOTAL_EMPLOYEES |
---|---|
101 |
3 |
103 |
3 |
104 |
3 |
出力コード:¶
Snowflake¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/06/2025", "domain": "test" }}';
INSERT INTO employee (id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
CREATE TABLE IF NOT EXISTS manager_employees AS
SELECT manager_id, COUNT(id) AS total_employees
FROM
employee
GROUP BY manager_id
HAVING COUNT(id) > 2
ORDER BY manager_id;
Results¶
MANAGER_ID |
TOTAL_EMPLOYEES |
---|---|
101 |
3 |
103 |
3 |
104 |
3 |
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
LIMIT および OFFSET 句¶
説明¶
LIMIT および OFFSET 句は、数値で指定された行数を取得し、スキップします。
Note
Snowflakeでは、 LIMIT および OFFSET 句が完全にサポートされています。
文法構文¶
[ LIMIT { number | ALL } ]
[ OFFSET start ]
サンプルソースパターン¶
LIMIT 数値¶
入力コード:¶
Redshift¶
SELECT id, name, manager_id, salary
INTO limited_employees
FROM employee
LIMIT 5;
Results¶
ID |
NAME |
MANAGER_ID |
SALARY |
---|---|---|---|
100 |
カルロス |
120000.00 |
|
101 |
John |
100 |
90000.00 |
102 |
ホルヘ |
101 |
95000.00 |
103 |
クワク |
101 |
105000.00 |
104 |
パウロ |
102 |
110000.00 |
出力コード:¶
Snowflake¶
CREATE TABLE IF NOT EXISTS limited_employees AS
SELECT id, name, manager_id, salary
FROM
employee
LIMIT 5;
Results¶
ID |
NAME |
MANAGER_ID |
SALARY |
---|---|---|---|
100 |
カルロス |
120000.00 |
|
101 |
John |
100 |
90000.00 |
102 |
ホルヘ |
101 |
95000.00 |
103 |
クワク |
101 |
105000.00 |
104 |
パウロ |
102 |
110000.00 |
LIMIT ALL¶
入力コード:¶
Redshift¶
SELECT id, name, manager_id, salary
INTO limited_employees
FROM employee
LIMIT ALL;
Results¶
ID |
NAME |
MANAGER_ID |
SALARY |
---|---|---|---|
100 |
カルロス |
120000.00 |
|
101 |
John |
100 |
90000.00 |
102 |
ホルヘ |
101 |
95000.00 |
103 |
クワク |
101 |
105000.00 |
104 |
パウロ |
102 |
110000.00 |
105 |
リチャード |
102 |
85000.00 |
106 |
マテオ |
103 |
95000.00 |
107 |
リュウ |
103 |
108000.00 |
108 |
チョウ |
104 |
95000.00 |
出力コード:¶
Snowflake¶
CREATE TABLE IF NOT EXISTS limited_employees AS
SELECT id, name, manager_id, salary
FROM
employee
LIMIT NULL;
Results¶
ID |
NAME |
MANAGER_ID |
SALARY |
---|---|---|---|
100 |
カルロス |
120000.00 |
|
101 |
John |
100 |
90000.00 |
102 |
ホルヘ |
101 |
95000.00 |
103 |
クワク |
101 |
105000.00 |
104 |
パウロ |
102 |
110000.00 |
105 |
リチャード |
102 |
85000.00 |
106 |
マテオ |
103 |
95000.00 |
107 |
リュウ |
103 |
108000.00 |
108 |
チョウ |
104 |
95000.00 |
LIMIT なしの OFFSET¶
Snowflakeは、 LIMIT なしの OFFSET をサポートしていません。LIMIT は、デフォルトの LIMIT である NULL で変換された後に追加されます。
入力コード:¶
Redshift¶
SELECT id, name, manager_id, salary
INTO limited_employees
FROM employee
OFFSET 5;
Results¶
ID |
NAME |
MANAGER_ID |
SALARY |
---|---|---|---|
105 |
リチャード |
102 |
85000.00 |
106 |
マテオ |
103 |
95000.00 |
107 |
リュウ |
103 |
108000.00 |
108 |
チョウ |
104 |
95000.00 |
出力コード:¶
Snowflake¶
CREATE TABLE IF NOT EXISTS limited_employees AS
SELECT id, name, manager_id, salary
FROM
employee
LIMIT NULL
OFFSET 5;
Results¶
ID |
NAME |
MANAGER_ID |
SALARY |
---|---|---|---|
105 |
リチャード |
102 |
85000.00 |
106 |
マテオ |
103 |
95000.00 |
107 |
リュウ |
103 |
108000.00 |
108 |
チョウ |
104 |
95000.00 |
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
ローカル変数とパラメーター¶
説明¶
Redshiftでは、ストアドプロシージャ内でステートメントを実行する際に、 SELECT INTO 変数を使用することもできます。
Note
このパターンはSnowflakeで完全にサポートされています。
文法構文¶
SELECT [ select_expressions ] INTO target [ select_expressions ] FROM ...;
サンプルソースパターン¶
左に式がある SELECT INTO¶
入力コード:¶
Redshift¶
CREATE OR REPLACE PROCEDURE test_sp1(out param1 int)
AS $$
DECLARE
var1 int;
BEGIN
select 10, 100 into param1, var1;
END;
$$ LANGUAGE plpgsql;
Results¶
param1 |
---|
10 |
出力コード:¶
Snowflake¶
CREATE OR REPLACE PROCEDURE test_sp1 (param1 OUT int)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "07/16/2025", "domain": "no-domain-provided" }}'
AS $$
DECLARE
var1 int;
BEGIN
select 10, 100 into
: param1,
: var1;
END;
$$;
Results¶
TEST_SP1 |
---|
{ "param1": 10 } |
右に式がある SELECT INTO¶
入力コード:¶
Redshift¶
CREATE OR REPLACE PROCEDURE test_sp1(out param1 int)
AS $$
DECLARE
var1 int;
BEGIN
select into param1, var1 10, 100;
END;
$$ LANGUAGE plpgsql;
Results¶
param1 |
---|
10 |
出力コード:¶
Snowflakeはこの文法を SELECT INTO ではサポートしていないため、式は INTO の左側に移動します。
Snowflake¶
CREATE OR REPLACE PROCEDURE test_sp1 (param1 OUT int)
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "07/16/2025", "domain": "no-domain-provided" }}'
AS $$
DECLARE
var1 int;
BEGIN
select
10, 100
into
: param1,
: var1;
END;
$$;
Results¶
TEST_SP1 |
---|
{ "param1": 10 } |
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
ORDER BY 句¶
説明¶
ORDER BY
句はクエリの結果セットをソートします。(Redshift SQL 言語リファレンスOrder By句)
Note
Snowflakeでは、 ORDER BY 句 が完全にサポートされています。
文法構文¶
[ ORDER BY expression [ ASC | DESC ] ]
[ NULLS FIRST | NULLS LAST ]
[ LIMIT { count | ALL } ]
[ OFFSET start ]
サンプルソースパターン¶
入力コード:¶
Redshift¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT,
salary DECIMAL(10, 2)
);
INSERT INTO employee (id, name, manager_id, salary) VALUES
(100, 'Carlos', NULL, 120000.00),
(101, 'John', 100, 90000.00),
(102, 'Jorge', 101, 95000.00),
(103, 'Kwaku', 101, 105000.00),
(104, 'Paulo', 102, 110000.00),
(105, 'Richard', 102, 85000.00),
(106, 'Mateo', 103, 95000.00),
(107, 'Liu', 103, 108000.00),
(108, 'Zhang', 104, 95000.00);
SELECT id, name, manager_id, salary
INTO salaries
FROM employee
ORDER BY salary DESC NULLS LAST, name ASC NULLS FIRST
LIMIT 5
OFFSET 2;
Results¶
ID |
NAME |
MANAGER_ID |
SALARY |
---|---|---|---|
107 |
リュウ |
103 |
108000.00 |
103 |
クワク |
101 |
105000.00 |
102 |
ホルヘ |
101 |
95000.00 |
106 |
マテオ |
103 |
95000.00 |
108 |
チョウ |
104 |
95000.00 |
出力コード:¶
Snowflake¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT,
salary DECIMAL(10, 2)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/06/2025", "domain": "test" }}';
INSERT INTO employee (id, name, manager_id, salary) VALUES
(100, 'Carlos', NULL, 120000.00),
(101, 'John', 100, 90000.00),
(102, 'Jorge', 101, 95000.00),
(103, 'Kwaku', 101, 105000.00),
(104, 'Paulo', 102, 110000.00),
(105, 'Richard', 102, 85000.00),
(106, 'Mateo', 103, 95000.00),
(107, 'Liu', 103, 108000.00),
(108, 'Zhang', 104, 95000.00);
CREATE TABLE IF NOT EXISTS salaries AS
SELECT id, name, manager_id, salary
FROM
employee
ORDER BY salary DESC NULLS LAST, name ASC NULLS FIRST
LIMIT 5
OFFSET 2;
Results¶
ID |
NAME |
MANAGER_ID |
SALARY |
---|---|---|---|
107 |
リュウ |
103 |
108000.00 |
103 |
クワク |
101 |
105000.00 |
102 |
ホルヘ |
101 |
95000.00 |
106 |
マテオ |
103 |
95000.00 |
108 |
チョウ |
104 |
95000.00 |
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
SELECT リスト¶
説明¶
SELECT リストには、クエリで返したい列、関数、式を指定します。リストはクエリの出力を表します。(Redshift SQL 言語リファレンス SELECT リスト)
Note
クエリ開始オプション はSnowflakeで完全にサポートされています。Snowflakeでは、 DISTINCT
と ALL
オプションはクエリの先頭に記述する必要があることに注意してください。
注釈
Redshiftでは、アプリケーションで外部キーや無効な主キーを許可すると、クエリが不正な結果を返すことがあります。例えば、 SELECT DISTINCT クエリは、主キー列が全ての一意な値を含んでいない場合、重複行を返す可能性があります。(Redshift SQL 言語リファレンス SELECT リスト)
文法構文¶
SELECT
[ TOP number ]
[ ALL | DISTINCT ] * | expression [ AS column_alias ] [, ...]
サンプルソースパターン¶
トップ句¶
入力コード:¶
Redshift¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT
);
INSERT INTO employee(id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
SELECT TOP 5 id, name, manager_id
INTO top_employees
FROM employee;
SELECT * FROM top_employees;
Results¶
ID |
NAME |
MANAGER_ID |
---|---|---|
100 |
カルロス |
null |
101 |
John |
100 |
102 |
ホルヘ |
101 |
103 |
クワク |
101 |
110 |
リュウ |
101 |
出力コード:¶
Snowflake¶
CREATE TABLE employee
(
id INT,
name VARCHAR(20),
manager_id INT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/06/2025", "domain": "test" }}';
INSERT INTO employee (id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
CREATE TABLE IF NOT EXISTS top_employees AS
SELECT TOP 5 id, name, manager_id
FROM
employee;
SELECT * FROM
top_employees;
Results¶
ID |
NAME |
MANAGER_ID |
---|---|---|
100 |
カルロス |
null |
101 |
John |
100 |
102 |
ホルヘ |
101 |
103 |
クワク |
101 |
110 |
リュウ |
101 |
ALL¶
入力コード:¶
Redshift¶
SELECT ALL manager_id
INTO manager
FROM employee;
Results¶
MANAGER_ID |
---|
null |
100 |
101 |
101 |
101 |
102 |
103 |
103 |
103 |
104 |
104 |
102 |
104 |
出力コード:¶
Snowflake¶
CREATE TABLE IF NOT EXISTS manager AS
SELECT ALL manager_id
FROM
employee;
Results¶
MANAGER_ID |
---|
null |
100 |
101 |
101 |
101 |
102 |
103 |
103 |
103 |
104 |
104 |
102 |
104 |
DISTINCT¶
入力コード:¶
Redshift¶
SELECT DISTINCT manager_id
INTO manager
FROM employee;
Results¶
MANAGER_ID |
---|
null |
100 |
101 |
102 |
103 |
104 |
出力コード:¶
Snowflake¶
CREATE TABLE IF NOT EXISTS manager AS
SELECT DISTINCT manager_id
FROM
employee;
Results¶
MANAGER_ID |
---|
null |
100 |
101 |
102 |
103 |
104 |
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
UNION、 INTERSECT、および EXCEPT¶
説明¶
UNION
、INTERSECT
、EXCEPT
セット演算子 は、2つの別々のクエリ式の結果を比較し、マージするために使用されます。(Redshift SQL 言語リファレンスセット演算子)
Note
Snowflakeでは、 セット演算子 が完全にサポートされています。
文法構文¶
query
{ UNION [ ALL ] | INTERSECT | EXCEPT | MINUS }
query
サンプルソースパターン¶
入力コード:¶
Redshift¶
SELECT id, name, manager_id
INTO some_employees
FROM
employee
WHERE manager_id = 101
UNION
SELECT id, name, manager_id
FROM
employee
WHERE manager_id = 102
UNION ALL
SELECT id, name, manager_id
FROM
employee
WHERE manager_id = 101
INTERSECT
SELECT id, name, manager_id
FROM
employee
WHERE manager_id = 103
EXCEPT
SELECT id, name, manager_id
FROM
employee
WHERE manager_id = 104;
Results¶
ID |
NAME |
MANAGER_ID |
---|---|---|
103 |
クワク |
101 |
110 |
リュウ |
101 |
102 |
ホルヘ |
101 |
106 |
マテオ |
102 |
201 |
ソフィア |
102 |
出力コード:¶
Snowflake¶
CREATE TABLE IF NOT EXISTS some_employees AS
SELECT id, name, manager_id
FROM
employee
WHERE manager_id = 101
UNION
SELECT id, name, manager_id
FROM
employee
WHERE manager_id = 102
UNION ALL
SELECT id, name, manager_id
FROM
employee
WHERE manager_id = 101
INTERSECT
SELECT id, name, manager_id
FROM
employee
WHERE manager_id = 103
EXCEPT
SELECT id, name, manager_id
FROM
employee
WHERE manager_id = 104;
Results¶
ID |
NAME |
MANAGER_ID |
---|---|---|
102 |
ホルヘ |
101 |
103 |
クワク |
101 |
110 |
リュウ |
101 |
106 |
マテオ |
102 |
201 |
ソフィア |
102 |
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
WHERE 句¶
説明¶
WHERE
句には、テーブルを結合するか、テーブルの列に述語を適用する条件が含まれます。(Redshift SQL 言語リファレンス WHERE 句)
Note
WHERE 句 はSnowflakeで完全にサポートされています。
文法構文¶
[ WHERE condition ]
サンプルソースパターン¶
入力コード:¶
Redshift¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT
);
INSERT INTO employee(id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
SELECT id, name, manager_id
INTO employee_names
FROM employee
WHERE name LIKE 'J%';
Results¶
ID |
NAME |
MANAGER_ID |
---|---|---|
101 |
John |
100 |
102 |
ホルヘ |
101 |
出力コード:¶
Snowflake¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "02/06/2025", "domain": "test" }}';
INSERT INTO employee (id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
CREATE TABLE IF NOT EXISTS employee_names AS
SELECT id, name, manager_id
FROM
employee
WHERE name LIKE 'J%' ESCAPE '\\';
Results¶
ID |
NAME |
MANAGER_ID |
---|---|---|
101 |
John |
100 |
102 |
ホルヘ |
101 |
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。
WITH 句¶
説明¶
WITH
句は、クエリで SELECT INTO の前に置かれるオプションの句です。WITH
句は、1つ以上の common_table_expressions を定義します。各共通テーブル式(CTE)は、ビュー定義に似た仮テーブルを定義します。これらの仮テーブルはFROM
句で参照できます。(Redshift SQL 言語リファレンス WITH 句)
Note
Snowflakeでは、 WITH 句 が完全にサポートされています。
文法構文¶
[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ]
--Where common_table_expression can be either non-recursive or recursive.
--Following is the non-recursive form:
CTE_table_name [ ( column_name [, ...] ) ] AS ( query )
--Following is the recursive form of common_table_expression:
CTE_table_name (column_name [, ...] ) AS ( recursive_query )
サンプルソースパターン¶
非再帰形式¶
入力コード:¶
Redshift¶
CREATE TABLE orders (
order_id INT,
customer_id INT,
order_date DATE,
total_amount DECIMAL(10,2)
);
INSERT INTO orders (order_id, customer_id, order_date, total_amount)
VALUES
(1, 101, '2024-02-01', 250.00),
(2, 102, '2024-02-02', 600.00),
(3, 103, '2024-02-03', 150.00),
(4, 104, '2024-02-04', 750.00),
(5, 105, '2024-02-05', 900.00);
WITH HighValueOrders AS (
SELECT
order_id,
customer_id,
order_date,
total_amount
FROM orders
WHERE total_amount > 500
)
SELECT * INTO high_value_orders FROM HighValueOrders;
SELECT * FROM high_value_orders;
Results¶
ORDER_ID |
CUSTOMER_ID |
ORDER_DATE |
TOTAL_AMOUNT |
---|---|---|---|
2 |
102 |
2024-02-02 |
600.00 |
4 |
104 |
2024-02-04 |
750.00 |
5 |
105 |
2024-02-05 |
900.00 |
出力コード:¶
Snowflake¶
CREATE TABLE orders (
order_id INT,
customer_id INT,
order_date DATE,
total_amount DECIMAL(10,2)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "03/03/2025", "domain": "test" }}';
INSERT INTO orders (order_id, customer_id, order_date, total_amount)
VALUES
(1, 101, '2024-02-01', 250.00),
(2, 102, '2024-02-02', 600.00),
(3, 103, '2024-02-03', 150.00),
(4, 104, '2024-02-04', 750.00),
(5, 105, '2024-02-05', 900.00);
CREATE TABLE IF NOT EXISTS high_value_orders AS
WITH HighValueOrders AS (
SELECT
order_id,
customer_id,
order_date,
total_amount
FROM
orders
WHERE total_amount > 500
)
SELECT *
FROM
HighValueOrders;
SELECT * FROM
high_value_orders;
Results¶
ORDER_ID |
CUSTOMER_ID |
ORDER_DATE |
TOTAL_AMOUNT |
---|---|---|---|
2 |
102 |
2024-02-02 |
600.00 |
4 |
104 |
2024-02-04 |
750.00 |
5 |
105 |
2024-02-05 |
900.00 |
再帰形式¶
入力コード:¶
Redshift¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT
);
INSERT INTO employee(id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
WITH RECURSIVE john_org(id, name, manager_id, level)
AS
(
SELECT id, name, manager_id, 1 AS level
FROM employee
WHERE name = 'John'
UNION ALL
SELECT e.id, e.name, e.manager_id, level + 1 AS next_level
FROM employee e, john_org j
WHERE e.manager_id = j.id and level < 4
)
SELECT DISTINCT id, name, manager_id into new_org FROM john_org ORDER BY manager_id;
SELECT * FROM new_org;
Results¶
ID |
NAME |
MANAGER_ID |
---|---|---|
101 |
John |
100 |
103 |
クワク |
101 |
102 |
ホルヘ |
101 |
110 |
リュウ |
101 |
106 |
マテオ |
102 |
201 |
ソフィア |
102 |
105 |
リチャード |
103 |
110 |
ニッキー |
103 |
104 |
パウロ |
103 |
120 |
サーンヴィ |
104 |
200 |
シャーリー |
104 |
205 |
チョウ |
104 |
出力コード:¶
Snowflake¶
CREATE TABLE employee (
id INT,
name VARCHAR(20),
manager_id INT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "07/11/2025", "domain": "no-domain-provided" }}';
INSERT INTO employee (id, name, manager_id) VALUES
(100, 'Carlos', null),
(101, 'John', 100),
(102, 'Jorge', 101),
(103, 'Kwaku', 101),
(110, 'Liu', 101),
(106, 'Mateo', 102),
(110, 'Nikki', 103),
(104, 'Paulo', 103),
(105, 'Richard', 103),
(120, 'Saanvi', 104),
(200, 'Shirley', 104),
(201, 'Sofía', 102),
(205, 'Zhang', 104);
CREATE TABLE IF NOT EXISTS new_org AS
WITH RECURSIVE john_org(id, name, manager_id, level)
AS
(
SELECT id, name, manager_id, 1 AS level
FROM
employee
WHERE name = 'John'
UNION ALL
SELECT e.id, e.name, e.manager_id, level + 1 AS next_level
FROM
employee e,
john_org j
WHERE e.manager_id = j.id and level < 4
)
SELECT DISTINCT id, name, manager_id
FROM
john_org
ORDER BY manager_id;
SELECT * FROM
new_org;
Results¶
ID |
NAME |
MANAGER_ID |
---|---|---|
101 |
John |
100 |
103 |
クワク |
101 |
102 |
ホルヘ |
101 |
110 |
リュウ |
101 |
106 |
マテオ |
102 |
201 |
ソフィア |
102 |
105 |
リチャード |
103 |
110 |
ニッキー |
103 |
104 |
パウロ |
103 |
120 |
サーンヴィ |
104 |
200 |
シャーリー |
104 |
205 |
チョウ |
104 |
既知の問題¶
既知の問題はありません。
関連 EWIs。¶
関連 EWIs はありません。