SELECT ステートメント
Google BigQuery API シンタックス
Google BigQuery API は、追加のSQL 演算子および関数を提供します。利用可能なシンタックスの完全なリストはこちらです。https://cloud.google.com/bigquery/query-reference
SELECT ステートメントは次の基本的な句で構成できます。 このステートメントには、M言語のOdbc.Query 関数を使用してアクセスできます。
- SELECT
- INTO
- FROM
- JOIN
- WHERE
- GROUP BY
- HAVING
- UNION
- ORDER BY
- LIMIT
SELECT 構文
次の構文ダイアグラムは、本製品 のSQL エンジンでサポートされている構文の概要を示します。
SELECT {
[ TOP <numeric_literal> | DISTINCT ]
{
*
| {
<expression> [ [ AS ] <column_reference> ]
| { <table_name> | <correlation_name> } .*
} [ , ... ]
}
{
FROM <table_reference> [ [ AS ] <identifier> ]
} [ , ... ]
[ [
INNER | { { LEFT | RIGHT | FULL } [ OUTER ] }
] JOIN <table_reference> [ ON <search_condition> ] [ [ AS ] <identifier> ]
] [ ... ]
[ WHERE <search_condition> ]
[ GROUP BY <column_reference> [ , ... ]
[ HAVING <search_condition> ]
[ UNION [ ALL ] <select_statement> ]
[
ORDER BY
<column_reference> [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ]
]
[
LIMIT <expression>
[
{ OFFSET | , }
<expression>
]
]
} | SCOPE_IDENTITY()
<expression> ::=
| <column_reference>
| @ <parameter>
| ?
| COUNT( * | { [ DISTINCT ] <expression> } )
| { AVG | MAX | MIN | SUM | COUNT } ( <expression> )
| NULLIF ( <expression> , <expression> )
| COALESCE ( <expression> , ... )
| CASE <expression>
WHEN { <expression> | <search_condition> } THEN { <expression> | NULL } [ ... ]
[ ELSE { <expression> | NULL } ]
END
| {RANK() | DENSE_RANK()} OVER ([PARTITION BY <column_reference>] {ORDER BY <column_reference>})
| <literal>
| <sql_function>
<search_condition> ::=
{
<expression> { = | > | < | >= | <= | <> | != | LIKE | NOT LIKE | IN | NOT IN | IS NULL | IS NOT NULL | AND | OR | CONTAINS | BETWEEN } [ <expression> ]
} [ { AND | OR } ... ]
サンプル
- すべてのカラムを返す:
SELECT * FROM [publicdata].[samples].github_nested
- カラムをリネームする:
SELECT [repository.name] AS MY_repository.name FROM [publicdata].[samples].github_nested
- カラムのデータを別のデータ型としてキャストする:
SELECT CAST(repository.watchers AS VARCHAR) AS Str_repository.watchers FROM [publicdata].[samples].github_nested
- データを検索する:
SELECT * FROM [publicdata].[samples].github_nested WHERE repository.name = 'EntityFramework'
- Google BigQuery API は、WHERE 句で次の処理をサポートしています:=, >, <, >=, <=, <>, !=, LIKE, NOT LIKE, IN, NOT IN, IS NULL, IS NOT NULL, AND, OR, +, -, *, /, %, ||。
SELECT * FROM [publicdata].[samples].github_nested WHERE repository.name = 'EntityFramework';
- クエリ条件に一致するアイテムの数を返す:
SELECT COUNT(*) AS MyCount FROM [publicdata].[samples].github_nested
- クエリ条件に一致する一意のアイテムの数を返す:
SELECT COUNT(DISTINCT repository.name) FROM [publicdata].[samples].github_nested
- クエリ条件に一致する一意のアイテムを返す:
SELECT DISTINCT repository.name FROM [publicdata].[samples].github_nested
- 昇順で結果をソートする:
SELECT actor.attributes.email, repository.name FROM [publicdata].[samples].github_nested ORDER BY repository.name ASC
- 指定した行数に結果を制限する:
SELECT actor.attributes.email, repository.name FROM [publicdata].[samples].github_nested LIMIT 10
- 実行時にインプットに渡すためクエリをパラメータ化する。これにより、prepared statement を作成しSQL インジェクション攻撃を鎮めることができます:
SELECT * FROM [publicdata].[samples].github_nested WHERE repository.name = @param
疑似カラム
SELECT ステートメントで入力専用フィールドを使用できます。これらのフィールド(疑似カラム)は、結果には
通常のカラムとして表示されることはありませんが、WHERE 句の一部として指定できます。疑似カラムを使用して、Google BigQuery から追加機能にアクセスできます。
SELECT * FROM [publicdata].[samples].github_nested WHERE Pseudo = '@Pseudo'
集計関数
集計関数を使用したSELECT の例については集計関数 を参照してください。
JOIN クエリ
JOIN を使用したSELECT クエリの例についてはJOIN クエリ を参照してください。
射影関数
射影関数を使用したSELECT 例については、射影関数 を参照してください。
叙述関数
叙述関数を使用したSELECT 例については、叙述関数 を参照してください。