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
andJOIN
クエリの対象となるデータを決定するために、クエリはまずFROM
コマンドを実行し、データを選択するソースを指定します。
複数のソースからのデータを含めるには、JOIN
節を含め、関連する列に基づいてソースの行を結合します:
-
INNER JOIN
は、と の両方のソースで一致したレコードを選択します。 -
LEFT JOIN
は、左のソースからすべてのレコードを選択し、右のソースで一致したレコードも選択します。 -
RIGHT JOIN
は、右のソースからすべてのレコードを選択し、左のソースで一致したレコードも選択する。 -
FULL JOIN
は、または のソースにあるすべてのレコードを選択します。
2 つ以上のソースからデータをコンパイルするには、複数の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 列名(複数可)
のように、指定された列の共通値に基づいて行を要約することができます。
持ち
クエリにGROUP BY
文が含まれる場合、HAVING
節の制約が適用されます。WHERE
と同様に、HAVING
は、特定の条件を満たす集約行のデータのみを含み、そうでない行は破棄する。
SELECT
またはSELECT DISTINCT
クエリは、FROM
およびJOIN
節によって決定されたソースにWHERE
節の制約を適用し、GROUP BY
文およびHAVING
節に基づいて行をグループ化した後、SELECT
文の任意の式を適用して、含めるデータをさらに指定します。例:
-
SELECT column1, column2 FROM source
column1
andcolumn2
fromsource
. -
SELECT * FROM source
returnsall fields fromsource
.
クエリにSELECT DISTINCT
ステートメントが含まれている場合、各カラムの値が重複している行は除外されます。
ORDER BY
クエリに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.