SQL ステートメントの構文
クエリサービスでは、以下の句を使用した標準的な SELECT ステートメントによるリクエストをサポートしています。
SELECT ステートメントの構文。
expression には、取得したい列や計算を指定できます。すべての列を取得するには、SELECT 句で ALL またはアスタリスクのワイルドカード文字 (*) を使用します。一意のレコードを取得するには、SELECT DISTINCT 句を使用します。
SELECT ステートメントでサポートされている句について説明します。
1[ WITH with_query [, ...] ]
2SELECT [ ALL | DISTINCT ] expression [, ...]
3[ FROM table [, ...] ]
4[ WHERE condition ]
5[ GROUP BY [ ALL | DISTINCT ] element [, ...] ]
6[ HAVING condition]
7[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
8[ ORDER BY expression [ ASC | DESC ] [, ...] ]
9[ OFFSET count [ ROW | ROWS ] ]
10[ LIMIT { count | ALL } ]FROM
FROM 句は、データを読み込むソースを指定するために使用します。有効なデータソースは次のとおりです。
次に例を示します。
- データレイクオブジェクト (DLO)、データモデルオブジェクト (DMO)、計算済みインサイトオブジェクト (CIO)。
- DLO、DMO、CIO の結合。結合の詳細は、「SQL 結合」を参照してください。
1SELECT [ ALL | DISTINCT ] expression [, ...] [ FROM table [, ...] ]1SELECT w_state__c, i_item_id__c FROM catalog_sales__dll
WITH
クエリ出力
WITH 句は、一時的なデータセットを宣言して、その出力を後続のクエリで参照および再利用するために使用します。次に、WITH 句を使用する SELECT ステートメントの一般的な構文を示します。
次に例を示します。
ここでは、Catalog_sales__dll テーブルを例にして、WITH 句の使用方法を示します。
クエリ例1WITH with_queryname AS (...) ]
2SELECT [ ALL | DISTINCT ] expression [, ...]
3[ FROM table [, ...] ]1WITH quantity_sales_AZ as (select w_state__c, SUM(*)
2from Catalog_sales__dll where w_state__c = ‘AZ’)
3SELECT quantity_sales_AZ from Catalog_sales__dll1w_state__c | o_city__c | d_city__c | i_item_id__c | retail_sales_price | quantity
2------------+------------------+---------------------+---------------------
3 AL | Huntsville| Huntsville | 5363626465464654 | 5000 | 100
4 AZ | Phoenix | Tucson | 8823598275928542 | 5000 | 100
5 AL | Huntsville| Huntsville | 9072358430537495 | 5000 | 100
6 NY | NYC | Albany | 9803626465464654 | 5000 | 100
7 NY | NYC | Albany | 8823598275928542 | 5000 | 100
8 AZ | Phoenix | Tucson | 7372351430537405 | 5000 | 100
9 AZ | Goodyear | Tucson | 1372351930538405 | 5000 | 100
10 MI | Detroit | Ann Arbour | 9013598275928231 | 5000 | 100
11 NY | Buffalo | NYC | 9803626465464654 | 5000 | 1001WITH quantity_sales_AZ as (select w_state__c, SUM(*)
2from Catalog_sales__dll where w_state__c = ‘AZ’)
3SELECT quantity_sales_AZ from Catalog_sales__dll1quantity_sales_AZ
2-----------------
3300WHERE
WHERE 句は、レコードを選択するために満足する必要がある条件を指定するために使用します。次に、WHERE 句を使用する SELECT ステートメントの基本的な構文を示します。
次に例を示します。
1SELECT [ ALL | DISTINCT ] expression [, ...]
2[ FROM table [, ...] ]
3[ WHERE condition]1SELECT w_state__c, i_item_id__c FROM catalog_sales__dll
2WHERE i_current_price__c between 0.99 and 1.49GROUP BY
同一のデータをグループに集約するには、GROUP BY 句を SELECT ステートメントで使用します。次に、GROUP BY 句を使用する SELECT ステートメントの一般的な構文を示します。
GROUP BY 句を使用した場合、SELECT ステートメントの出力の expression では、集計関数や GROUP BY 句で使用する列を使用できます。
1SELECT [ ALL | DISTINCT ] expression [, ...]
2[ FROM table [, ...] ]
3[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]GROUP BY 句の grouping_element には、GROUPING SETS、CUBE、ROLLUP のいずれかを指定できます。
GROUP BY 句の理解を深めるために、Catalog_sales__dll テーブルを使用します。
クエリ例
クエリ出力
GROUP BY 句は次の 3 つの演算子をサポートしています。1w_state__c | o_city__c | d_city__c | i_item_id__c | retail_sales_price | quantity
2 ------------+------------------+---------------------+---------------------
3 AL | Huntsville| Huntsville| 5363626465464654 | 5000 | 100
4 AZ | Phoenix | Tucson | 8823598275928542 | 5000 | 100
5 AL | Huntsville| Huntsville| 9072358430537495 | 5000 | 100
6 NY | NYC | Albany | 9803626465464654 | 5000 | 100
7 NY | NYC | Albany | 8823598275928542 | 5000 | 100
8 AZ | Phoenix | Tucson | 7372351430537405 | 5000 | 100
9 AZ | Goodyear | Tucson | 1372351930538405 | 5000 | 100
10 MI | Detroit | Ann Arbour| 9013598275928231 | 5000 | 100
11 NY | Buffalo | NYC | 9803626465464654 | 5000 | 1001select w_state__c, sum(retail_sales_price * quantity) as statewise__sales
2from Catalog_sales__dll
3group by w_state__c1w_state__c | statewise__sales
2------------+------------------+-
3AL |10,00,000
4AZ |15,00,000
5NY |15,00,000
6MI |5,00,000-
GROUPING SETS - 1 つの SELECT ステートメントで複数の GROUP BY 句を指定する場合に使用します。グループ化セット (GROUPING SETS) とは、GROUP BY 句で結果セットをグループ化するための列のリストです。たとえば、Catalog_sales__dll テーブルの o_city__c と d_city__c のグループ化された数を確認するために、グループ化セット (o_city__c, d_city__c) を作成できます。
1SELECT count(*), o_city__c, d_city__c 2FROM catalog_sales__dll 3GROUP BY GROUPING SETS (o_city__c, d_city__c)1count(*) | o_city__c | d_city__c 2------------+--------------------- 3 2 | Huntsville| Huntsville 4 2 | Phoenix | Null 5 3 | Null | Tucson 6 1 | Goodyear | Null 7 2 | NYC | Null 8 1 | Buffalo | Null 9 2 | Null | Albany 10 1 | Null | NYC 11 1 | Detroit | Null 12 1 | Null | Ann Arbor -
CUBE - CUBE 演算子は、指定された列の集合で取りえるすべてのグループ化セットを生成します。たとえば、州ごとの販売数や、総販売数量を求めることができます。
1SELECT w_state__c, SUM(quantity) as quantity_sold FROM catalog_sales__dll 2 GROUP BY CUBE(w_state__c, o_city__c)1w_state__c | quantity_sold 2------------+------------------+- 3AL | 200 4AZ | 300 5NY | 300 6MI | 100 7Null | 900 -
ROLLUP - ROLLUP 演算子は、指定された列の集合で取りえるすべての小計を生成できます。次に例を示します。
1SELECT w_state__c, SUM(quantity) as quantity_sold FROM catalog_sales__dll 2GROUP BY ROLLUP(w_state__c)1w_state__c | quantity_sold 2------------+------------------+- 3AL | 200 4AZ | 300 5NY | 300 6MI | 100 7Null | 900
HAVING
HAVING 句は、GROUP BY 句の結果をフィルタリングするために使用します。HAVING 句は、指定された条件を満足しないグループを排除します。
HAVING 句を使用する SELECT ステートメントの基本的な構文は次のとおりです。
1SELECT [ ALL | DISTINCT ] select_expression [, ...]
2[ FROM table [, ...] ]
3[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
4[ HAVING condition]1SELECT w_state__c, i_item_id__c, count(cs_item__c)
2FROM catalog_sales__dll
3GROUP BY ALL
4HAVING count(cs_item__c)>100ORDER BY
ORDER BY 句は、クエリ結果を昇順または降順に並び替えるために使用します。
1SELECT [ ALL | DISTINCT ] select_expression [, ...]
2[ FROM table [, ...] ]
3[ ORDER BY expression [ ASC | DESC ] [, ...] ]1SELECT w_state__c, i_item_id__c, count(cs_item__c)
2FROM catalog_sales__dll
3ORDER BY w_state__cOFFSET
OFFSET 句は、取得された結果から指定した数の先頭行を削除するために使用します。
1SELECT [ ALL | DISTINCT ] select_expression [, ...]
2[ FROM table [, ...] ]
3[ OFFSET count [ ROW | ROWS ] ]1SELECT w_state__c, i_item_id__c, count(cs_item__c)
2FROM catalog_sales__dll
3OFFSET BY 5LIMIT
結果セットの行数を制限するには、SELECT ステートメントで LIMIT 句を使用します。
1SELECT [ ALL | DISTINCT ] select_expression [, ...]
2[ FROM table [, ...] ]
3[ LIMIT { count | ALL } ]1SELECT w_state__c, i_item_id__c, count(cs_item__c)
2FROM catalog_sales__dll
3LIMIT 5