ファイル ジオデータベースでレポートと分析を行うための SQL

QueryDef の SubFields (フィールド リスト) メソッドを介して式とエイリアスを使用すると、ファイル ジオデータベースでの分析とレポートが向上します。さらに、PostFixClause を通じて ORDER BY と GROUP BY がサポートされます。GROUP BY のサポートでは、式に MIN、MAX、SUM などの集計関数が含まれます。

以下に、ファイル ジオデータベースで使用できる関数の一覧と例を示します。

ALIAS

わかりやすい出力にするために、コラムに別の名前を付けます。

SQL

SELECT NAME, POP1997 - POP1990 as PopChange
FROM counties ORDER BY NAME

ArcObjects

pQueryDef.SubFields = "NAME, POP1997 - POP1990 as PopChange"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY NAME"

CASE

条件のリストを評価し、結果式の 1 つを返します。

SQL

SELECT name,salary,
CASE
	WHEN salary <= 2000 THEN 'low'
	WHEN salary > 2000 AND salary <= 3000 THEN 'average'
	WHEN salary > 3000 THEN 'high'
	END AS salary_level
	FROM employees
	ORDER BY salary ASC

ArcObjects

pQueryDef.SubFields = "name,salary,
CASE
	WHEN salary <= 2000 THEN 'low'
	WHEN salary > 2000 AND salary <= 3000 THEN 'average'
	WHEN salary > 3000 THEN 'high'
	END AS salary_level"
	pQueryDef.Tables = " employees"
	pQueryDef.PostfixClause = " ORDER BY salary ASC "

COALESCE

引数の中から最初の NULL 以外のフィールド値を返します。

SQL

SELECT Name, COALESCE(Business_Phone, Cell_Phone, Home_Phone)
Contact_Phone
FROM Contact_Info

ArcObjects

queryDef.SubFields = "Name, COALESCE(Business_Phone, Cell_Phone,
Home_Phone) Contact_Phone"
queryDef.Tables = "Contact_Info"

Contact_Info:

Name

Business_Phone

Cell_Phone

Home_Phone

Jeff

531-2531

622-7813

565-9901

Laura

NULL

772-5588

312-4088

Peter

NULL

NULL

594-7477

結果:

Name

Contact_Phone

Jeff

531-2531

Laura

772-5588

Peter

594-7477

条件式

SQL

SELECT SIN(sunangle)
FROM sightings

ArcObjects

queryDef.SubFields = "SIN(sunangle)"
queryDef.Tables = "sightings"

関数の設定

演算子説明

AVG

グループ内のすべての値の平均を計算します。NULL 値は無視されます。

COUNT (*)、COUNT (式)

COUNT (*) は、テーブルのレコード数を返します。NULL も含められます。COUNT (式) は、指定された式の値の数を返します。NULL は無視されます。

MAX

グループ内の最大値を見つけます。NULL 値は無視されます。

MIN

グループ内の最小値を見つけます。NULL 値は無視されます。

STDDEV、STDDEV_SAMP

式のサンプル標準偏差を返します。

STDDEV_POP

式の母標準偏差を返します。

SUM

グループ内の値を見つけます。NULL 値は無視されます。

VAR、VAR_SAMP

式のサンプル分散を返します。

VAR_POP

式の母分散を返します。

算術演算子

算術演算子を使用して、数値の加算、減算、乗算、除算を実行します。

演算子説明

*

乗算のための算術演算子

/

除算のための算術演算子

+

加算のための算術演算子

-

減算のための算術演算子

関数

ファイル ジオデータベースでサポートされる関数の完全リストを以下に示します。

日付関数

関数説明

CURRENT_DATE

現在の日付を返します。

EXTRACT (extract_field FROM extract_source)

extract_source から extract_field の部分を返します。extract_source 引数は、日時を表す式です。extract_field 引数には、YEAR、MONTH、DAY、HOUR、MINUTE、または SECOND のいずれかのキーワードを指定できます。

CURRENT TIME

現在の時刻を返します。

CURRENT_TIMESTAMP

現在の日付と時刻を返します。

文字列関数

引数 string_exp には、列の名前、文字列リテラル、またはデータ タイプを文字型として表すことができる別のスカラー関数の結果を指定することができます。

引数 character_exp は、可変長の文字列です。

引数 start または length には、数値リテラル、またはデータ タイプを数値型として表すことができる別のスカラー関数の結果を指定することができます。

文字列関数は 1 から始まります。つまり、文字列の最初の文字は 1 文字目となります。

関数説明

CHAR_LENGTH (string_exp)

文字列の長さ (文字数) を返します。

CONCAT (string_exp1, string_exp2)

string_exp2string_exp1 に連結した結果として得られる文字列を返します。

LOWER (string_exp)

string_exp のすべての大文字を小文字に変換した文字列を返します。

POSITION (character_exp IN character_exp)

第 2 文字式に含まれている第 1 文字式の位置を返します。この結果は、精度とスケールを持つ厳密な数値であり、精度は実装定義、スケールは 0 です。

SUBSTRING (string_exp FROM start FOR length)

start で指定した文字位置から length で指定した文字数の文字列を string_exp から取得して返します。

TRIM(BOTH | LEADING | TRAILINGtrim_characterFROM string_exp)

string_exp の先頭、末尾、または両端から trim_character を削除した文字列を返します。

UPPER (string_exp)

string_exp に一致する文字列を返します。すべての小文字が大文字に変換されます。

数値関数

すべての数値関数は数値を返します。

numeric_expfloat_exp、または integer_exp 引数には、データ タイプを数値型として表すことができる列の名前、別のスカラー関数の結果、または数値リテラルを指定することができます。

関数説明

ABS (numeric_exp)

numeric_exp の絶対値を返します。

ACOS (float_exp)

角度をラジアンで示した float_exp の逆余弦を返します。

ASIN (float_exp)

角度をラジアンで示した float_exp の逆正弦を返します。

ATAN (float_exp)

角度をラジアンで示した float_exp の逆正接を返します。

CEILING (numeric_exp)

numeric_exp 以上の最も小さい整数を返します。

COS (float_exp)

角度をラジアンで示した float_exp の余弦を返します。

FLOOR (numeric_exp)

numeric_exp 以下の最も大きい整数を返します。

LOG (float_exp)

float_exp の自然対数を返します。

LOG10 (float_exp)

float_exp の底が 10 の対数を返します。

MOD (integer_exp1, integer_exp2)

integer_exp2 で除算された integer_exp1 の余りを返します。

POWER (numeric_exp, integer_exp)

numeric_expinteger_exp を累乗した値を返します。

ROUND (numeric_exp, integer_exp)

numeric_exp を小数点以下の integer_exp で表される桁に丸めた値を返します。integer_exp が負の場合、numeric_exp は小数点以上の |integer_exp| で表される桁に丸められます。

SIGN (numeric_exp)

numeric_exp の符号を表す値を返します。numeric_exp が 0 よりも小さい場合は -1 が返されます。numeric_exp が 0 の場合、0 が返されます。numeric_exp が 0 より大きい場合は 1 が返されます。

SIN (float_exp)

ラジアンで角度を示した float_exp の正弦を返します。

TAN (float_exp)

ラジアンで角度を示した float_exp の正接を返します。

TRUNCATE (numeric_exp, integer_exp)

numeric_exp を小数点以下の integer_exp で表される桁に丸めた値を返します。integer_exp が負の場合、numeric_exp は小数点以上の |integer_exp| で表される桁に切り捨てられます。

GROUP BY

複数のレコードのデータを収集し、1 つ以上の列ごとに結果をグループ化するために使用します。

SQL

SELECT STATE_NAME, SUM(POP1990) as TotalPopulation
FROM counties
GROUP BY STATE_NAME ORDER BY STATE_NAME

ArcObjects

pQueryDef.SubFields = "STATE_NAME, SUM(POP1990) as
TotalPopulation"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "GROUP BY STATE_NAME ORDER BY
STATE_NAME"

HAVING

GROUP BY の Where 句です。

SQL

SELECT department, MAX(salary) as Highest_salary
FROM employees
GROUP BY department HAVING MAX(salary) < 50000

ArcObjects

queryDef.SubFields = "department, MAX(salary) as Highest_salary"
queryDef.Tables = "employees"
pQueryDef.PostfixClause = "GROUP BY department HAVING MAX(salary)
< 50000"

JOINS

2 つ以上のテーブルからレコードを結合させます。

Cross Join

SQL

SELECT Table1.name, Table1.Address, Table2.name, Table2.Salary
FROM Table1 CROSS JOIN Table2

ArcObjects

queryDef.SubFields = "Table1.name, Table1.Address, Table2.name,
Table2.Salary"
queryDef.Tables = "Table1 CROSS JOIN Table2"

Inner Join

SQL

SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
INNER JOIN Table2 ON Table1.C1 = Table2.C3

ArcObjects

queryDef.SubFields = "Table1.C1, Table1.C2, Table2.C3,
Table2.C4"
queryDef.Tables = "Table1 INNER JOIN Table2 ON Table1.C1 =
Table2.C3"

Left Outer Join

SQL

SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4 FROM Table1
LEFT OUTER JOIN Table2 ON Table1.C1 = Table2.C3

ArcObjects

queryDef.SubFields = "Table1.C1, Table1.C2, Table2.C3,
Table2.C4"
queryDef.Tables = "Table1 LEFT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3"

Right Outer Join

SQL

SELECT * FROM Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3

ArcObjects

queryDef.SubFields = "*"
queryDef.Tables = "Table1 RIGHT OUTER JOIN Table2 ON Table1.C1 =
Table2.C3"

NULLIF

指定された 2 つのパラメーターが等しい場合、NULLIF により NULL が返されます。そうでない場合、最初のパラメーターの値が返されます。

SQL

SELECT Location, NULLIF(Sales, Forecast) as Results FROM
StoreSales

ArcObjects

queryDef.SubFields = " Location, NULLIF(Sales, Forecast) as
Results"
queryDef.Tables = "StoreSales"

StoreSales:

位置売上予測

レッドランズ

39000

55000

Palm Springs

60000

61000

Riverside

40000

40000

結果:

位置結果

レッドランズ

39000

Palm Springs

60000

Riverside

NULL

ORDER BY

ソート順を指定します。順序には、昇順 (ASC) または降順 (DESC) の 2 種類があり、順序化の後照合されます。照合タイプには、BINARY (BIN)、CASESENSITIVE (CASE)、NOCASESENSITIVE (NOCASE) があります。BINARY 照合では、大文字小文字とアクセントの両方が区別されます。CASESENSITIVE では、大文字と小文字が区別されます。NOCASESENSITIVE では、大文字と小文字は区別されません。

SQL

SELECT STATE_NAME, POP1990
FROM counties ORDER BY STATE_NAME

ArcObjects

pQueryDef.SubFields = "STATE_NAME, POP1990"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY STATE_NAME"

SQL

SELECT STATE_NAME, POP1990
FROM counties ORDER BY STATE_NAME COLLATE BINARY ASC

ArcObjects

pQueryDef.SubFields = "STATE_NAME, POP1990"
pQueryDef.Tables = "counties"
pQueryDef.PostfixClause = "ORDER BY STATE_NAME COLLATE BINARY
ASC"

このトピックの内容
  1. ALIAS
  2. CASE
  3. COALESCE
  4. 条件式