SQL エディタでクエリを入力するとき または計算を作成するとき 、Presto SQL 構文 を使用します。たとえば、SQL エディタで、SELECT クエリを完全に構成して、含めるソースを検索し、そのデータをフィルタすることができます:
SELECT DISTINCT column, AGG_FUNC(column_or_expression), ... FROM source JOIN another_source ON source.column = another_source.WHERE constraint_expression GROUP BY column HAVING constraint_expression ORDER BY column ASC/DESC LIMIT count OFFSET COUNT
注: データの統合を保証するために、SQLエディタはSELECTのような読み取り専用文をサポートしますが、 INSERTやDELETEのような読み取り/書き込み文はサポートしません。
これらの句と文に加えて、SQL構文には、さらに結果を定義し計算を実行するための関数や演算子を含むことができます:
運営順序
すべてのクエリにすべての句が含まれるわけではありませんが、SQLステートメントの各部分は特定の順序で実行されます。
-
FROMおよびJOIN:クエリ対象のデータのソースを判別します。 -
WHERE:特定の条件を満たすデータのみを含めます。 -
GROUP BY:一般的な値に基づいてデータを要約します。 -
HAVING:特定の条件を満たす集約された行からのデータのみを含めます。 -
SELECTまたはSELECT DISTINCT:含めるソースデータをさらに詳しく指定します。 -
ORDER BY:結果においてデータを並べ替える方法を指定します。 -
LIMITおよびOFFSET:クエリから含めるレコードの数と量を指定します。
クエリがSQL構文を実行する順序を理解することは、各ステップで利用可能な結果を識別するのに役立ちます。
FROMとJOIN
クエリの対象となるデータを決定するために、クエリはまず、FROM コマンドを実行し、データを選択するソースを指定します。
複数のソースからのデータを含めるには、JOIN 節を含め、関連列に基づいてソースの行を結合します:
-
INNER JOINは、両方のソースで一致したレコードを選択します。 -
LEFT JOIN左側のソースからすべてのレコードを選択し、右側のソースで一致したレコードも選択する。 -
RIGHT JOIN右のソースからすべてのレコードを選択し、左のソースで一致したレコードも選択する。 -
FULL JOINは、どちらかのソースのすべてのレコードを選択します。
3つ以上のソースからデータを結合するには、複数のJOIN節を適用して、ソースを順番に結合します。 例えば、カスタマーや荷主に関するデータとと注文を組み合わせます:
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName FROM ((Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID) INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID)
注: クエリビルダーでは、JOIN節を関係として作成します。
どこ
クエリは、FROM およびJOIN 節に基づいてソースを決定した後、WHERE 節を実行して、特定の条件を満たすデータのみに結果をフィルターします。
以下によるグループ
クエリが集計関数を含む場合、GROUP BY ステートメントを含み、GROUP BY 列名称 のように、指定された列の共通値に基づいて行を要約することができます。
以下を有する
クエリがGROUP BY ステートメントを含む場合、HAVING 節の制約が適用されます。WHERE,HAVING と同様に、特定の条件を満たす集計行のデータのみを含み、そうでない行は破棄されます。
SELECT またはSELECT DISTINCT
クエリは、FROM およびJOIN 節によって決定されたソースに、WHERE 節の制約を適用し、GROUP BY 文およびHAVING 節に基づいて行をグループ化した後、SELECT 文の任意の式を適用して、含めるデータをさらに指定します。例:
-
SELECT column1, column2 FROM sourceは、ソースからの列1と列2のフィールドのみを返却します。 -
SELECT * FROM sourceは、ソースからのフィールドをすべて返します。
クエリにSELECT DISTINCT ステートメントを含む場合、各列の値が複製されている行は除外されます。
以下により整理
クエリにORDER BY キーワードが含まれている場合、指定された列に基づいて、昇順または降順(ASC またはDESC)で結果を並べ替えます。例えば、ORDER BY field_header ASC 。
複数のフィールドに従って並べ替えるには、ORDER BY field_header1 ASC, field_header2 DESCのように、各フィールドをカンマで区切ります。
メモ: ORDER BY のデフォルト値はASC 。ORDER BY ステートメントのフィールド名称の後に、ASC またはDESC を指定しないと、自動的に昇順にソートされます。
LIMIT およびOFFSET
最終確認として、クエリはLIMIT 、OFFSET 節の範囲外の行を破棄する。
- 結果に特定の数のレコードを返却するには、
LIMIT節を含む。例えば、ソースから最初の30レコードを返却するには、SELECT * FROM source LIMIT 30. - 特定の数のレコードを返却するが、ソースの最初のレコードから開始しない場合は、
OFFSET節にスキップするレコード数を追加します。例えば、16番目から始まる10レコードを返却するには、SELECT * FROM source LIMIT 10 OFFSET 15.