Utilisation de SQL pour la création de rapports et d'analyses sur des géodatabases fichier

La géodatabase fichier permet d'effectuer des analyses et des rapports approfondis grâce à l'utilisation d'expressions et d'alias via la méthode SubFields (liste des champs) d'une jointure QueryDef. De plus, les mots-clés ORDER BY et GROUP BY sont pris en charge via la clause PostFixClause. Pour le mot-clé GROUP BY, les expressions incluent des fonctions d'agrégation telles que MIN, MAX et SUM.

ALIAS

Attribue un autre nom à une colonne, afin d'obtenir une sortie plus lisible.

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

Evalue une liste de conditions et renvoie une expression parmi plusieurs expressions résultantes.

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

Renvoie la première valeur de champ non Null parmi ses arguments.

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 :

Nom

Business_Phone

Cell_Phone

Home_Phone

Jeff

531-2531

622-7813

565-9901

Laura

NULL

772-5588

312-4088

Peter

NULL

NULL

594-7477

Résultat :

Nom

Contact_Phone

Jeff

531-2531

Laura

772-5588

Peter

594-7477

EXPRESSIONS

SQL

SELECT SIN(sunangle)
FROM sightings

ArcObjects

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

FONCTIONS SET

Opérateur Description

AVG

Calcule la moyenne de toutes les valeurs du groupe. Les valeurs Null sont ignorées.

COUNT(*), COUNT(expression)

COUNT(*) renvoie le nombre d'enregistrements contenus dans une table. Les valeurs Null sont incluses. COUNT(expression) renvoie le nombre de valeurs dans l'expression spécifiée. Les valeurs Null sont ignorées.

MAX

Recherche les valeurs maximum du groupe. Les valeurs Null sont ignorées.

MIN

Recherche la valeur minimum du groupe. Les valeurs Null sont ignorées.

STDDEV, STDDEV_SAMP

Renvoie l'écart type de l'échantillon de l'expression.

STDDEV_POP

Renvoie l'écart type de la population de l'expression.

SUM

Recherche les valeurs contenues dans le groupe. Les valeurs Null sont ignorées.

VAR, VAR_SAMP

Renvoie la variance de l'échantillon de l'expression.

VAR_POP

Renvoie la variance de la population de l'expression.

OPERATEURS ARITHMETIQUES

Vous utilisez un opérateur arithmétique pour additionner, soustraire, multiplier et diviser des valeurs numériques.

Opérateur Description

*

Opérateur arithmétique pour la multiplication

/

Opérateur arithmétique pour la division

+

Opérateur arithmétique pour l'addition

-

Opérateur arithmétique pour la soustraction

FONCTIONS

Vous trouverez ci-après la liste complète des fonctions prises en charge par les géodatabases fichier.

Fonctions de date

Fonction Description

CURRENT_DATE

Renvoie la date actuelle.

EXTRACT (extract_field FROM extract_source)

Renvoie la partie extract_field de l'argument extract_source. L'argument extract_source désigne une expression de date-heure. L'argument extract_field peut correspondre à l'un des mots-clés suivants: ANNEE, MOIS, JOUR, HEURE, MINUTE ou SECONDE.

CURRENT_TIME

Renvoie l'heure actuelle.

CURRENT_TIMESTAMP

Renvoie l'heure et la date actuelles.

Fonctions de chaîne

Les arguments signalés par string_exp peuvent représenter le nom d'une colonne, un littéral de chaîne de caractères ou le résultat d'une autre fonction scalaire dans lequel le type de données sous-jacent peut être représenté par un type de caractère.

Les arguments signalés par character_exp représentent des chaînes de caractères à longueur variable.

Les arguments signalés par start ou length peuvent représenter un littéral numérique ou le résultat d'une autre fonction scalaire dans lequel le type de données sous-jacent peut être représenté par un type numérique.

Ces fonctions de chaîne sont de base 1, c'est-à-dire que le premier caractère de la chaîne représente la valeur 1.

Fonction Description

CHAR_LENGTH (string_exp)

Renvoie la longueur en caractères de l'expression de chaîne.

CONCAT (string_exp1, string_exp2)

Renvoie une chaîne de caractères comme résultat de la concaténation de string_exp2 vers string_exp1.

LOWER (string_exp)

Renvoie une chaîne égale à string_exp en convertissant toutes les majuscules en minuscules.

POSITION (character_exp IN character_exp)

Renvoie la position de la première expression de caractères dans la seconde expression de caractères. Le résultat se présente sous la forme d'une valeur numérique exacte avec une précision définie au niveau de l'implémentation et une échelle de zéro.

SUBSTRING (string_exp FROM start FOR length)

Renvoie une chaîne de caractères dérivée de string_exp, commençant à la position spécifiée par start pour les caractères length.

TRIM(BOTH | LEADING | TRAILINGtrim_characterFROM string_exp)

Renvoie l'argument string_exp avec trim_character supprimés du début, de la fin ou des deux extrémités de la chaîne.

UPPER (string_exp)

Renvoie une chaîne égale à string_exp en convertissant toutes les minuscules en majuscules.

Fonctions numériques

Toutes les fonctions numériques renvoient une valeur numérique.

Les arguments signalés par numeric_exp, float_exp ou integer_exp peuvent représenter le nom d'une colonne, le résultat d'une autre fonction scalaire, ou un littéral numérique dans lequel le type de données sous-jacent peut représenter un type numérique.

Fonction Description

ABS (numeric_exp)

Renvoie la valeur absolue de numeric_exp.

ACOS (float_exp)

Renvoie l'arcosinus de float_exp sous forme d'un angle exprimé en radians.

ASIN (float_exp)

Renvoie l'arcsine de float_exp sous forme d'un angle exprimé en radians.

ATAN (float_exp)

Renvoie l'arctangente de float_exp sous forme d'un angle exprimé en radians.

CEILING (numeric_exp)

Renvoie le plus petit nombre entier supérieur ou égal à numeric_exp.

COS (float_exp)

Renvoie le cosinus de float_expfloat_expreprésente un angle exprimé en radians.

FLOOR (numeric_exp)

Renvoie le plus grand nombre entier inférieur ou égal à numeric_exp.

LOG (float_exp)

Renvoie le logarithme naturel de float_exp.

LOG10 (float_exp)

Renvoie le logarithme de base 10 de float_exp.

MOD (integer_exp1, integer_exp2)

Renvoie le reste de la division de integer_exp1 par integer_exp2.

POWER (numeric_exp, integer_exp)

Renvoie la valeur de numeric_exp à la puissance de integer_exp.

ROUND (numeric_exp, integer_exp)

Renvoie numeric_exp arrondi à la valeur integer_exp à droite de la virgule. Si integer_exp est négatif, numeric_exp est arrondi à |integer_exp| à gauche de la virgule.

SIGN (numeric_exp)

Renvoie un indicateur du signe de numeric_exp. Si numeric_exp est inférieur à zéro, la valeur -1 est renvoyée. Si numeric_exp est égal à zéro, la valeur 0 est renvoyée. Si numeric_exp est supérieur à zéro, la valeur 1 est renvoyée.

SIN (float_exp)

Renvoie le sinus de float_expfloat_exp représente un angle exprimé en radians.

TAN (float_exp)

Renvoie la tangente de float_expfloat_exp représente un angle exprimé en radians.

TRUNCATE (numeric_exp, integer_exp)

Renvoie numeric_exp tronqué à integer_exp positions à droite de la virgule. Si integer_exp est négatif, numeric_exp est tronqué à |integer_exp| à gauche de la virgule.

GROUP BY

Permet de collecter des données sur plusieurs enregistrements et de grouper les résultats en fonction d'une ou de plusieurs colonnes

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

Clause WHERE sur un argument GROUP BY.

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

Associe les enregistrements de deux ou plusieurs tables.

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

NULLIF renvoie la valeur NULL si les deux paramètres fournis sont égaux ; dans le cas contraire, la valeur du premier paramètre est renvoyée.

SQL

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

ArcObjects

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

StoreSales :

Emplacement Sales Forecast

Redlands

39000

55000

Palm Springs

60000

61000

Riverside

40000

40000

Résultat :

Emplacement Résultats

Redlands

39000

Palm Springs

60000

Riverside

NULL

ORDER BY

Spécifie l'ordre de tri. L'ordre peut être croissant (ASC) ou décroissant (DESC) et les champs peuvent être regroupés. Les types de regroupement possibles sont BINARY(BIN), CASESENSITIVE(CASE) et NOCASESENSITIVE(NOCASE). Le regroupement de type Binary est à la fois sensible à la casse et aux accents. Le regroupement de type Casesensitive fait la distinction entre les majuscules et les minuscules. Le regroupement de type Nocasesensitive ne fait pas la distinction entre les majuscules et les minuscules.

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"
5/10/2014