Ejemplos de cláusula SELECT

Los ejemplos a continuación examinan cómo Spectrum Spatial delega consultas al proveedor de fuente de datos, mientras cumple con las reglas de delegación. Se proporcionan tanto las consultas agregadas como las no agregadas. En cada ejemplo, se utiliza la misma 'tabla' espacial. Tiene los siguientes atributos:
  • city [char25]
  • estado [char20]
  • pop [decimal(12,0)]
  • hhinc [decimal(8,0)]
  • area [decimal(6.1)]
  • GEOLOC (Obj)

Ejemplo 1:

SELECT * FROM table

Esta consulta devuelve todos los atributos de todas las filas de la tabla. El * es un comodín que representa a todos los atributos. Spectrum Spatial expande el * en una lista de todos los atributos de la tabla en el orden en que aparecen en la tabla y delega la consulta completa al proveedor de fuente de datos. Esto se debe a la Regla 1.

Ejemplo 2:

SELECT Count(*) FROM table

Esta consulta de agregación devuelve todos los atributos de todas las filas de la tabla. Esto cumple con la Regla 5, en la cual la función de agregación se encuentra en la cláusula SELECT.

Ejemplo 3:

SELECT state, city FROM table 

Esta consulta devuelve los atributos 'city' y 'state' de todas las filas de la tabla. Esta consulta se delega en su totalidad al proveedor de fuente datos debido a la Regla 2 y a la Regla 4.

Ejemplo 4:

SELECT UPPER(city) FROM table

Este ejemplo ofrece una vista previa de una consulta que solo se ha traspasado parcialmente al proveedor de fuente de datos. La Regla 6 indica que Spectrum Spatial no puede delegar operadores o funciones a un proveedor de fuente de datos. Esto significa que Spectrum Spatial debe ejecutar la función UPPER. Para hacerlo, necesita el atributo 'city' de la 'tabla' y construir la consulta siguiente para delegar al proveedor de datos:

SELECT city FROM table

Spectrum Spatial ejecuta la siguiente consulta frente a los resultados de la consulta del proveedor de datos:

SELECT UPPER(city) FROM <results of the delegation> 

Ejemplo 5:

SELECT city, pop/area AS proportion FROM table

En este ejemplo, el usuario desea que "pop" se encuentre dividido por el "área" y la "ciudad" devuelta. La Regla 6 no permite que "/" se delegue. Spectrum Spatial también aprovecha la Regla 1 para obtener los atributos necesarios para satisfacer la consulta y construye la siguiente para delegar al proveedor de datos:

SELECT city, pop, area FROM table
Spectrum Spatial ejecuta la siguiente consulta frente a los resultados de la consulta del proveedor de datos. Los resultados se devuelven con el uso de un alias. Si el alias no se proporcionó en la consulta original, los resultados tendrán un nombre poco agradable generado por computadora.
SELECT city, pop/area AS proportion FROM <results of the delegation>
Ejemplo 6:
SELECT city, avg(hhinc) FROM table WHERE state='ny' GROUP BY city ORDER BY city

Esta consulta devuelve el atributo "city" (ciudad) para el ingreso promedio en el hogar (hhinc). Esta consulta se delega en su totalidad al proveedor de datos debido a la Regla 2, Regla 3 y Regla 5

Ejemplo 7:
SELECT city, avg(hhinc) FROM table WHERE pop => 50000 GROUP BY city ORDER BY city

En este ejemplo, el proveedor de fuentes de datos admite la función avg(), pero no admite el operador => en la cláusula WHERE. La consulta en la cual interviene el proveedor de fuentes de datos es:

SELECT city, hhinc FROM table 

Y Spectrum Spatial actuaría en esta:

select city, avg(hhinc) FROM <results from the delegation> WHERE pop => 50000 GROUP BY city ORDER BY city
Ejemplo 8:
SELECT city, avg(hhinc) FROM table WHERE pop => 50000 GROUP BY city ORDER BY city

En este ejemplo, el proveedor de fuentes de datos admite la función avg(), el operador => en la cláusula WHERE, pero no admite GROUP BY. La consulta en la cual interviene el proveedor de fuentes de datos es:

SELECT city, hhinc FROM table WHERE pop => 50000 

Y Spectrum Spatial actuaría en esta:

select city, avg(hhinc) FROM <results from the delegation> WHERE pop => 50000 GROUP BY city ORDER BY city