SQL para la presentación de informes y análisis en las geodatabases de archivos

La geodatabase de archivos permite mejorar la presentación de informes y análisis mediante el uso de expresiones y alias por medio de subcampos (lista de campos) en QueryDef. Además ORDER BY y GROUP BY son compatibles con PostFixClause. En apoyo de GROUP BY, las expresiones incluyen funciones de agregación como MIN, MAX y SUM.

La siguiente es una lista de las funciones que se pueden utilizar con geodatabases de archivos y ejemplos.

ALIAS

Da a una columna otro nombre para proporcionar más comprensión de salida.

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

Evalúa una lista de condiciones y devuelve una de varias expresiones de resultado.

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 "

FUSIÓN

Devuelve el primer valor de campo no nulo entre sus argumentos.

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:

Nombre

Business_Phone

Cell_Phone

Home_Phone

Jeff

531-2531

622-7813

565-9901

Laura

NULO

772-5588

312-4088

Peter

NULO

NULO

594-7477

Resultado:

Nombre

Contact_Phone

Jeff

531-2531

Laura

772-5588

Peter

594-7477

EXPRESIONES

SQL

SELECT SIN(sunangle)
FROM sightings

ArcObjects

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

FUNCIONES DE CONJUNTO

OperadorDescripción

AVG

Calcula el promedio de todos los valores en el grupo. Se ignoran los valores nulos.

COUNT(*), COUNT(expresión)

COUNT(*) devuelve la cantidad de registros en una tabla. Se incluyen valores nulos. COUNT(expresión) devuelve el número de valores en la expresión especificada. Se ignoran los nulos.

MÁX

Busca los valores máximos en el grupo. Se ignoran los valores nulos.

MIN

Encuentra el valor mínimo en el grupo. Se ignoran los valores nulos.

STDDEV, STDDEV_SAMP

Devuelve la muestra la desviación estándar de la expresión.

STDDEV_POP

Devuelve la desviación de población estándar de la expresión.

SUMA

Busca los valores en el grupo. Se ignoran los valores nulos.

VAR, VAR_SAMP

Devuelve la varianza de muestra de la expresión.

VAR_POP

Devuelve la varianza de población de la expresión.

OPERARIOS ARITMÉTICOS

Se utiliza un operador aritmético para sumar, restar, multiplicar y dividir valores numéricos.

OperadorDescripción

*

Operador aritmético para la multiplicación

/

Operador aritmético para la división

+

Operador aritmético para la suma

############################################################-

Operador aritmético para la resta

FUNCIONES

A continuación se muestra la lista completa de funciones admitidas por las geodatabases de archivos.

Funciones de fecha

FunciónDescripción

CURRENT_DATE

Devuelve la fecha actual.

EXTRACTO (extract_field DESDE extract_source)

Devuelve la porción extract_field deextract_source. El argumento extract_source es una expresión de fecha y hora. El argumento extract_field puede ser una de las siguientes palabras clave: YEAR, MONTH, DAY, HOUR, MINUTE o SECOND.

CURRENT TIME

Devuelve la hora actual.

CURRENT_TIMESTAMP

Devuelve la fecha y hora actual.

Funciones de cadena de caracteres

Los argumentos denotados como string_exp pueden ser el nombre de una columna, una cadena de caracteres literal o el resultado de otra función escalar, donde el tipo de datos subyacentes se pueda representar como un tipo de carácter.

Los argumentos denotados como character_exp son cadenas de caracteres de longitud variable.

Los argumentos denotados como start o length pueden ser literal-numérico o el resultado de otra función escalar, donde el tipo de datos subyacentes se pueda representar como un tipo numérico.

Estas funciones de cadena están basadas en 1; es decir, el primer carácter de la cadena es el número 1.

FunciónDescripción

CHAR_LENGTH(string_exp)

Devuelve la longitud en caracteres de la expresión de cadena.

CONCAT(string_exp1, string_exp2)

Devuelve una cadena de caracteres que es el resultado de la concatenación de string_exp2 con string_exp1.

LOWER(string_exp)

Devuelve una cadena de caracteres equivalente a la de string_exp, con todos los caracteres en mayúsculas convertidos en minúsculas.

POSITION(character_exp IN character_exp)

Devuelve la posición de la primera expresión de carácter en la segunda expresión de carácter. El resultado es un número exacto con una precisión definida por implementación y una escala de cero.

SUBCADENA DE CARACTERES (string_exp DESDE inicio PARA longitud)

Devuelve una cadena de caracteres derivada de string_exp, que comienza en la posición de carácter especificada por los caracteres start para length.

TRIM(BOTH | LEADING | TRAILINGtrim_characterFROM string_exp)

Devuelve string_exp con trim_character quitado del extremo inicial, del extremo final o de ambos extremos de la cadena.

UPPER(string_exp)

Devuelve una cadena equivalente a la de string_exp, con todos los caracteres en minúsculas convertidos en mayúsculas.

Funciones numéricas

Todas las funciones numéricas devuelven un valor numérico.

Los argumentos denotados como numeric_exp, float_exp o integer_exp pueden ser el nombre de una columna, el resultado de otra función escalar o un literal-numérico, donde los tipos de datos subyacentes pueden representarse como un tipo numérico.

FunciónDescripción

ABS(numeric_exp)

Devuelve el valor absoluto de numeric_exp.

ACOS(float_exp)

Devuelve el arcocoseno de float_exp como un ángulo expresado en radianes.

ASIN(float_exp)

Devuelve el arcoseno de float_exp como un ángulo expresado en radianes.

ATAN(float_exp)

Devuelve el arco tangente de float_exp como un ángulo expresado en radianes.

CEILING(numeric_exp)

Devuelve el entero más pequeño mayor o igual que numeric_exp.

COS(float_exp)

Devuelve el coseno de float_exp, donde float_exp es un ángulo expresado en radianes.

FLOOR(numeric_exp)

Devuelve el entero más grande menor o igual que numeric_exp.

LOG(float_exp)

Devuelve el logaritmo natural de float_exp.

LOG10(float_exp)

Devuelve el logaritmo de base 10 de float_exp.

MOD(integer_exp1, integer_exp2)

Devuelve el restante de integer_exp1 dividido por integer_exp2.

POWER(numeric_exp, integer_exp)

Devuelve el valor de numeric_exp a la potencia de integer_exp.

ROUND(numeric_exp, integer_exp)

Devuelve numeric_exp redondeado a integer_exp lugares a la derecha del punto decimal. Si integer_exp es negativo, numeric_exp se redondea a |integer_exp| lugares a la izquierda del punto decimal.

SIGN(numeric_exp)

Devuelve un indicador del signo de numeric_exp. Si numeric_exp es menor que cero, se devuelve -1. Si numeric_exp es igual a cero; se devuelve 0. Si numeric_exp es mayor que cero; se devuelve 1.

SIN(float_exp)

Devuelve el seno de float_exp, donde float_exp es un ángulo expresado en radianes.

TAN(float_exp)

Devuelve la tangente de float_exp, donde float_exp es un ángulo expresado en radianes.

TRUNCATE(numeric_exp, integer_exp)

Devuelve numeric_exp truncado a integer_exp lugares a la derecha del punto decimal. Si integer_exp es negativo, numeric_exp se trunca a |integer_exp| lugares a la izquierda del punto decimal.

AGRUPAR POR

Se utiliza para capturar datos en varios registros y agrupar los resultados por una o más columnas

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"

TENER

Una cláusula where sobre 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"

UNIONES

Combina los registros de dos o más tablas.

Unión de cruce

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"

Unión interna

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"

Unión externa izquierda

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"

Unión derecha externa

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

NULO SI devuelve NULO si los dos parámetros proporcionados son iguales; de lo contrario, se devuelve el valor del primer parámetro

SQL

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

ArcObjects

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

StoreSales:

UbicaciónVentasPrevisión

Redlands

39000

55000

Palm Springs

60000

61000

Riverside

40000

40000

Resultado:

UbicaciónResultados

Redlands

39000

Palm Springs

60000

Riverside

NULO

ORDER BY

Especifica el orden de clasificación. El orden puede ser ascendente (ASC) o descendente (DESC) y ser recogidos. Los tipos de intercalación incluyen BINARY(BIN), CASESENSITIVE(CASE) y NOCASESENSITIVE(NOCASE). La intercalación binaria es tanto caso como acento sensibles. Casesensitive distingue entre mayúsculas y minúsculas cartas. Nocasesensitive no distingue entre mayúsculas y minúsculas cartas.

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"