この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

SQL ステートメントの構文

クエリサービスでは、以下の句を使用した標準的な SELECT ステートメントによるリクエストをサポートしています。
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 } ]
expression には、取得したい列や計算を指定できます。すべての列を取得するには、SELECT 句で ALL またはアスタリスクのワイルドカード文字 (*) を使用します。一意のレコードを取得するには、SELECT DISTINCT 句を使用します。

CREATE、INSERT、DROPDELETE ステートメントは、クエリサービスには適用されません。

メモ

SELECT ステートメントでサポートされている句について説明します。

FROM

FROM 句は、データを読み込むソースを指定するために使用します。有効なデータソースは次のとおりです。
  • データレイクオブジェクト (DLO)、データモデルオブジェクト (DMO)、計算済みインサイトオブジェクト (CIO)。
  • DLO、DMO、CIO の結合。結合の詳細は、「SQL 結合」を参照してください。
次に、FROM 句を使用する SELECT ステートメントの基本的な構文を示します。
1SELECT [ ALL | DISTINCT ] expression [, ...] [ FROM table [, ...] ]
次に例を示します。
1SELECT w_state__c, i_item_id__c FROM catalog_sales__dll
WITH
WITH 句は、一時的なデータセットを宣言して、その出力を後続のクエリで参照および再利用するために使用します。次に、WITH 句を使用する SELECT ステートメントの一般的な構文を示します。
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__dll
ここでは、Catalog_sales__dll テーブルを例にして、WITH 句の使用方法を示します。
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          | 100
クエリ例
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__dll
クエリ出力
1quantity_sales_AZ
2-----------------
3300

WITH 句を使って任意の数の一時的なデータセットを宣言し、メインのクエリからそのデータセットを参照できます。1 つ以上の一時的なデータセットからデータを取得する方法の詳細については、JOIN 句を参照してください。

メモ

WHERE

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.49

GROUP BY

同一のデータをグループに集約するには、GROUP BY 句を SELECT ステートメントで使用します。次に、GROUP BY 句を使用する SELECT ステートメントの一般的な構文を示します。
1SELECT [ ALL | DISTINCT ] expression [, ...]
2[ FROM table [, ...] ]
3[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
GROUP BY 句を使用した��合、SELECT ステートメントの出力の expression では、集計関数や GROUP BY 句で使用する列を使用できます。

GROUP BY 句の grouping_element には、GROUPING SETSCUBEROLLUP のいずれかを指定できます。

GROUP BY 句の理解を深めるために、Catalog_sales__dll テーブルを使用します。
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           | 100
クエリ例
1select w_state__c, sum(retail_sales_price * quantity) as statewise__sales
2from Catalog_sales__dll
3group by w_state__c
クエリ出力
1w_state__c | statewise__sales
2------------+------------------+-
3AL         |10,00,000
4AZ         |15,00,000
5NY         |15,00,000
6MI         |5,00,000
GROUP BY 句は次の 3 つの演算子をサポートしています。
  • GROUPING SETS - 1 つの SELECT ステートメントで複数の GROUP BY 句を指定する場合に使用します。グループ化セット (GROUPING SETS) とは、GROUP BY 句で結果セットをグループ化するための列のリストです。たとえば、Catalog_sales__dll テーブルの o_city__cd_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)>100

ORDER 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__c

OFFSET

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 5

LIMIT

結果セットの行数を制限するには、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