Exemples de la Clause SELECT

Les exemples ci-dessous examiner la manière dont Spectrum Spatial délègue requêtes au fournisseur de source de données et prend en charge les règles de délégation. Des requêtes d'agrégation et de non agrégation sont fournies. Dans chaque exemple, la même « table spatiale » est utilisée. Il possède les attributs suivants :
  • City [char25]
  • État [char20]
  • POP [decimal(12,0)]
  • hhinc [decimal(8,0)]
  • zone [decimal(6.1)]
  • GEOLOC (Obj)

Exemple 1 :

SELECT * FROM table

Cette requête renvoie tous les attributs de toutes les lignes de la table. Le * est un caractère générique qui représente tous les attributs. Spectrum Spatial développe le * dans une liste de tous les attributs dans la table dans l'ordre qu'ils se trouvent dans la table et délègue l'intégralité de la requête au fournisseur de source de données. Il s'agit de règle 1.

Exemple 2 :

SELECT Count(*) FROM table

Cette requête d'agrégation renvoie tous les attributs de toutes les lignes de la table. Cela satisfait la Règle 5 selon laquelle la fonction d’agrégation figure dans la clause SELECT.

Exemple 3 :

SELECT state, city FROM table 

Cette requête renvoie les attributs « province » et « ville » pour toutes les lignes de la table. Cette requête est déléguée dans son intégralité pour le fournisseur de source de données en raison des 2 règles et règle 4.

Exemple 4 :

SELECT UPPER(city) FROM table

Cet exemple présente la première une requête qui est partiellement déléguée au fournisseur de source de données. Règle 6 États que Spectrum Spatial ne peut pas déléguer opérateurs ou les fonctions d'un fournisseur de source de données. Cela signifie que Spectrum Spatial doit s'exécuter la fonction UPPER. Pour ce faire, il a besoin de l'attribut « ville » de « table », construit la requête suivante est déléguée au fournisseur de données :

SELECT city FROM table

La requête suivante est exécutée par Spectrum Spatial en fonction des résultats de la requête du fournisseur de données :

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

Exemple 5 :

SELECT city, pop/area AS proportion FROM table

Dans cet exemple, l’utilisateur veut que « pop » soit divisé par les éléments « area » et « city » renvoyés. La Règle 6 n’autorise pas la délégation de « / ». Spectrum Spatial utilise également la Règle 1 pour obtenir les attributs nécessaires pour satisfaire la requête et génère les éléments suivants à déléguer au fournisseur de données :

SELECT city, pop, area FROM table
La requête suivante est exécutée par Spectrum Spatial en fonction des résultats de la requête du fournisseur de données. Les résultats sont renvoyés à l’aide d’un alias. Si aucun alias n’a été fourni dans la requête d’origine, les résultats portent un nom non convivial généré par l'ordinateur.
SELECT city, pop/area AS proportion FROM <results of the delegation>
Exemple 6 :
SELECT city, avg(hhinc) FROM table WHERE state='ny' GROUP BY city ORDER BY city

Cette requête renvoie l'attribut «  city » pour toutes les lignes et le revenu de foyer moyen (hhinc). Cette requête est déléguée dans son intégralité au fournisseur de source de données en raison des Règle 2, Règle 3 et Règle 5.

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

Dans cet exemple, le fournisseur de source de données prend en charge la fonction avg(), mais pas l'opérateur = > de la clause WHERE. La requête sur laquelle agit le fournisseur de source de données est la suivante :

SELECT city, hhinc FROM table 

Et Spectrum Spatial agit sur ceci :

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

Dans cet exemple, le fournisseur de source de données prend en charge la fonction avg() et l'opérateur = > de la clause WHERE, mais pas GROUP BY. La requête sur laquelle agit le fournisseur de source de données est la suivante :

SELECT city, hhinc FROM table WHERE pop => 50000 

Et Spectrum Spatial agit sur ceci :

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