3.3.2. リテラル
リテラル値は固定値を表します。これらは 'standard' のデータ型のいずれかです。データ型の詳細は、「データタイプ」を参照 し てください。
構文ルール
- 整数値には、値(整数、long、または大きな整数)を保持するのに十分なデータ型が割り当てられます。
- 浮動小数点の値は常に二重に解析されます。
- キーワード「null」は、存在しない値または不明な値を表すために使用され、本質的に入力されません。多くの場合、null リテラル値にはコンテキストに基づいて暗黙的なタイプが割り当てられます。たとえば、関数 '5 + null' では、null 値には、値 '5' のタイプに一致する「integer」タイプが割り当てられます。暗黙的なコンテキストを持たないクエリーの SELECT 句で使用される null リテラルは 'string' タイプに割り当てられます。
簡単なリテラル値の例は次のとおりです。
'abc'
'abc'
例: エスケープされた単一ティック
'isn"t true'
'isn"t true'
5
5
例: Scientific 表記
-37.75e01
-37.75e01
例: 完全数値型 BigDecimal
100.0
100.0
true
true
false
false
例: Unicode 文字
'\u0027'
'\u0027'
例: バイナリー
X'0F0A'
X'0F0A'
日付/タイムリテラルは、JDBC Escaped リテラル構文 のいずれかを使用することができます。
例: Date リテラル
{d'...'}
{d'...'}
例: Time リテラル
{t'...'}
{t'...'}
例: Timestamp リテラル
{ts'...'}
{ts'...'}
または、ANSI キーワード構文です。
例: Date リテラル
DATE '...'
DATE '...'
例: Time リテラル
TIME '...'
TIME '...'
例: Timestamp リテラル
TIMESTAMP '...'
TIMESTAMP '...'
いずれの方法でも、式の文字列リテラル値の部分は定義された形式(「yyyy-MM-dd」、日付の場合は "hh:mm:ss"、および "yyyy-MM-dd[ hh:mm:ss[.fff…]]]"(タイムスタンプ)に従う必要があります。
集約関数
集約関数は、明示的なグループまたは暗黙的な GROUP BY によって生成されるグループからの値セットを取得し、グループから計算された単一のスカラー値を返します。
Data Virtualization で以下の集約機能を使用できます。
- COUNT(*)
- グループの値(null および重複を含む)をカウントします。整数を返します。大きな数が計算されると例外が発生します。
- COUNT(x)
- グループの値の数をカウントします(null を除く)。整数を返します。大きな数が計算されると例外が発生します。
- COUNT_BIG(*)
- グループの値(null および重複を含む)をカウントします。long - より大きい数が計算されると例外がスローされます。
- COUNT_BIG(x)
- グループの値の数をカウントします(null を除く)。long - より大きい数が計算されると例外がスローされます。
- SUM(x)
- グループの値の合計(null を除く)
- AVG(x)
- グループの値(null を除く)の平均。
- MIN(x)
- グループの最小値(null を除く)。
- MAX(x)
- グループの最大値(null を除く)。
- ANY(x)/SOME(x)
- グループのいずれかの値が TRUE の場合(null を除く)、TRUE を返します。
- EVERY(x)
- グループのすべての値が TRUE の場合(null を除く)、TRUE を返します。
- VAR_POP(x)
- biased variance(excluding null)logically equals(sum(x^2)- sum(x)^2/count(x))/count(x); returns a double; null if count = 0.
- VAR_SAMP(x)
- Example variance(null)logically equals(sum(x^2)- sum(x)^2/count(x))/(count(x)- 1); returns a double; null if count < 2.
- STDDEV_POP(x)
- 標準偏差(null を除く)は SQRT(VAR_POP(x))に論理的に等しくなります。
- STDDEV_SAMP(x)
- 標準偏差の例(null を除く)は SQRT(VAR_SAMP(x))に論理的に等しくなります。
- TEXTAGG(expression [as name], … [DELIMITER char] [QUOTE char | NO QUOTE] [HEADER] [ENCODING id] [ORDER BY …])
- グループの各行のすべての式の CSV テキスト集計。DELIMITER が指定されていない場合、デフォルトでコンマ(,)が区切り文字として使用されます。null 以外の値はすべて引用符で囲まれます。二重引用符(")はデフォルトの引用符文字です。QUOTE を使用して別の値を指定するか、または値の引用なしで NO QUOTE を指定します。HEADER が指定されている場合、結果にはヘッダーの行が最初の行として含まれます。グループ内に行がない場合でも、ヘッダー行が表示されます。この集約は Blob を返します。
TEXTAGG(col1, col2 as name DELIMITER '|' HEADER ORDER BY col1)
TEXTAGG(col1, col2 as name DELIMITER '|' HEADER ORDER BY col1)
- XMLAGG(xml_expr [ORDER BY …])- グループ内のすべての XML 式の XML 連結(null を除く)ORDER BY 句はエイリアス名を参照したり、位置の順序を使用したりできません。
- JSONARRAY_AGG(x [ORDER BY …])- null 値を含む Clob として JSON 配列の結果を作成します。ORDER BY 句はエイリアス名を参照したり、位置の順序を使用したりできません。詳細は、「 JSONARRAY 関数 」を参照してください。
例: 整数値式
jsonArray_Agg(col1 order by col1 nulls first)
jsonArray_Agg(col1 order by col1 nulls first)
戻る可能性がある
[null,null,1,2,3]
[null,null,1,2,3]
- STRING_AGG(x, delim)- 区切り文字 delim を使用して x の連結から誤った結果を作成します。いずれの引数も null の場合、値は連結されません。どちらの引数も文字(string/clob)またはバイナリー(varbinary、Blob)となり、結果はそれぞれ CLOB または BLOB になります。DISTINCT および ORDER BY は STRING_AGG で許可されます。
例: 文字列の集約式
string_agg(col1, ',' ORDER BY col1 ASC)
string_agg(col1, ',' ORDER BY col1 ASC)
戻る可能性がある
'a,b,c'
'a,b,c'
-
LIST_AGG(x [, delim])WITHIN GROUP(ORDER BY …)- Oracle と同じ構文を使用する STRING_AGG の形式。ここで
、
X は文字列に変換できる任意の型にすることができます。delim
値(指定されている場合)はリテラルでなければならず、ORDER BY
値が必要です。これは、同等のstring_agg
式の解析エイリアスのみです。
例: 集約式の一覧表示
listagg(col1, ',') WITHIN GROUP (ORDER BY col1 ASC)
listagg(col1, ',') WITHIN GROUP (ORDER BY col1 ASC)
戻る可能性がある
'a,b,c'
'a,b,c'
- ARRAY_AGG(x [ORDER BY …])- 式 x に一致するベースタイプでアレイを作成します。ORDER BY 句はエイリアス名を参照したり、位置の順序を使用したりできません。
- agg([DISTINCT|ALL] arg … [ORDER BY …])- A user defined aggregate function.
構文ルール
- 一部の集約関数には式の前にキーワード「DISTINCT」が含まれている可能性があり、重複式の値を無視するべきであることを示します。DISTINCT は COUNT(*)で許可されず、MIN または MAX(結果の変更)では意味がないため、COUNT、SUM、および AVG で使用できます。
- 集約関数は、クエリー式に干渉しない FROM、GROUP BY、または WHERE 句で使用できません。
- 集約関数は、クエリー式に干渉しない別の集約関数内で入れ子にすることはできません。
- 集約関数は、他の関数内で入れ子にすることができます。
- すべての集約関数は、オプションの FILTER 句の形式の FILTER 句を取ることができます。
FILTER ( WHERE condition )
FILTER ( WHERE condition )
条件は、サブクエリーまたは相関変数を含まないブール値式にすることができます。フィルターは、グループ化操作の前に各行に対して論理的に評価されます。false の場合、集約関数は指定の行の値を累積しません。
集計についての詳細は、GROUP BY または HAVING のセクションを参照してください。