|
|
|
|
|
|
|
|
||||||||||||||||
| scalar-expression scalar-operator scalar-expression | ||||||||||||||||||||||
このドキュメントでは、次のトピックについて説明します。
scalar-expression は、ファクタまたはスカラ演算子を含む他のスカラ式で構成されます。
参照の優先順位に関して、スカラ式は次のように処理されます。
非修飾変数名がスカラ式に指定されるとき、最初に変数名は参照テーブルの列名として解決されます。
指定された名前の列が参照テーブルで有効でない場合、Natural はこの変数を Natural ユーザー定義変数(ホスト変数)として解決しようとします。
|
|
+ |
|
- |
||
* |
||
/ |
scalar-operator は、上記リストのいずれかの演算子です。マイナス(-)およびスラッシュ(/)の演算子を使用する場合は、先行する演算子との間を最低 1 つの空白で区切る必要があります。
|
|
|
factor は、上図のいずれかの項目で構成されます。これらの項目について次に説明します。
|
|
parameter |
|
atom は、parameter または constant のいずれかです。
|
|
|
column-name |
column-reference は、オプションで table-name または correlation-name(「基本構文項目」も参照)で修飾された列名です。修飾された名前は修飾されない名前よりも明確であり、ときには修飾が必要となります。
注意:
このような場合には、テーブル名を認可 ID で明示的に修飾しないでください。テーブル名を修飾するときは、代わりに相関名を使用してください。
table-name または correlation-name で列を参照する場合、列は対応するテーブル内に含まれている必要があります。table-name も correlation-name も指定されていない場合、各列は FROM 節(「テーブル式」を参照)に指定されたテーブルのいずれかに存在している必要があります。
|
|
COUNT |
|
|
||||
|
|
|
|
( |
|
|||
SQL は基本的な取得機能拡張のために多くの特別関数を提供しています。現在有効で Natural がサポートする、いわゆる SQL 集積関数は次のとおりです。
AVG |
列の平均値 |
COUNT |
列の値の個数 |
MAX |
列の最大値 |
MIN |
列の最小値 |
SUM |
列の合計値 |
COUNT(*) 以外のこれらの各関数は、引数(つまり、単一の列または scalar-expression)のスカラ値の集合を処理します。その結果としてスカラ値を生成します。
例:
DEFINE DATA LOCAL 1 AVGAGE (I2) END-DEFINE ... SELECT AVG (AGE) INTO AVGAGE FROM SQL-PERSONNEL ...
関数が適用される前に余分な重複値を削除するため、一般的に、引数の前にキーワード DISTINCT をオプションで指定できます。
DISTINCT を指定する場合、引数は単一の列名にする必要があります。DISTINCT を指定しない場合、引数は一般的な scalar-expression の構成にすることもできます。
DISTINCT は、重複値を削除せずにテーブルのすべての行をカウントする特別関数 COUNT(*) に指定することはできません。
time-zone-specific-expression
タイムゾーン値付きのタイムスタンプを指定します。AT
LOCAL または AT TIME
ZONE
AT
LOCAL|
|
function-invocation |
|
{AT
LOCAL}
|
|||||
AT TIME
ZONE|
|
function-invocation |
|
{AT
TIME ZONE}
|
|
function-invocation |
|
||
special-register
USER |
special-register に対する参照はスカラ値を返します。
| (scalar-expression,...) |
row-value-expression は、1 つ以上の列値で構成される 1 つの行を返します。値は、式のリストとして指定できます。row-value-expression によって返される列の数は、式の数と等しくなります。row-value-expression は、複数の属性(数量、DISTINCT、比較 および IN)のオペランドとして使用できます。