SELECT 句の例
- city [char25]
- state [char20]
- pop [decimal(12,0)]
- hhinc [decimal(8,0)]
- area [decimal(6.1)]
- GEOLOC (Obj)
例 1:
SELECT * FROM table
このクエリは、テーブルのすべての行からすべての属性を返します。「*」は、すべての属性を表すワイルドカードです。Spectrum Spatial は「*」を展開してテーブル内の全属性をテーブル内と同じ順序でリスト化し、クエリ全体をデータ ソース プロバイダに委任します。この動作は規則 1 に基づきます。
例 2:
SELECT Count(*) FROM table
この集約クエリは、テーブルのすべての行からすべての属性を返します。これは、集約関数が SELECT 句の中にある規則 5 を満たします。
例 3:
SELECT state, city FROM table
このクエリは、テーブルにあるすべての行から "state" 属性と "city" 属性を返します。このクエリは、規則 2 および規則 4 に従って、データ ソース プロバイダに完全に委任されます。
例 4:
SELECT UPPER(city) FROM table
この例では、データ ソース プロバイダに一部のみがプッシュ ダウンされるクエリを初めて紹介します。規則 6 により、Spectrum Spatial は演算子または関数をデータ ソース プロバイダに委任できません。これは Spectrum Spatial が UPPER 関数を実行しなければならないことを意味します。そのためには、"city" 属性を "table" から取得し、以下のクエリを作成してデータ ソース プロバイダに委任する必要があります。
SELECT city FROM table
以下のクエリは、データ プロバイダから返されたクエリ結果に対して Spectrum Spatial によって実行されます。
SELECT UPPER(city) FROM <results of the delegation>
例 5:
SELECT city, pop/area AS proportion FROM table
この例において、ユーザが求めているのは、'pop' を 'area' と 'city' で割った結果を返すことです。規則 6 により、'/' は委任できません。Spectrum Spatial は、規則 1 も活用してクエリを満たすために必要な属性を取得し、以下のクエリを作成してデータ プロバイダに委任します。
SELECT city, pop, area FROM table
以下のクエリは、データ プロバイダから返されたクエリ結果に対して Spectrum Spatial によって実行されます。結果は、エイリアスを使用して返されます。元のクエリにエイリアスが提供されていない場合は、コンピュータによって生成されたわかりにくい名前が結果に付けられます。SELECT city, pop/area AS proportion FROM <results of the delegation>
例 6:SELECT city, avg(hhinc) FROM table WHERE state='ny' GROUP BY city ORDER BY city
このクエリは、テーブル内のすべての行の ‘city' 属性と、平均世帯収入 (hhinc) を返します。このクエリは、規則 2、規則 3、規則 5 に従って、データ プロバイダに完全に委任されます。
例 7:SELECT city, avg(hhinc) FROM table WHERE pop => 50000 GROUP BY city ORDER BY city
この例において、データ ソース プロバイダは avg() 関数をサポートしますが、WHERE 句内の => 演算子をサポートしません。データ ソース プロバイダは、次のクエリに従って動作します。
SELECT city, hhinc FROM table
Spectrum Spatial は、次のクエリに従って動作します。
select city, avg(hhinc) FROM <results from the delegation> WHERE pop => 50000 GROUP BY city ORDER BY city
例 8:SELECT city, avg(hhinc) FROM table WHERE pop => 50000 GROUP BY city ORDER BY city
この例において、データ ソース プロバイダは avg() 関数と WHERE 句内の => 演算子をサポートしますが、GROUP BY をサポートしません。データ ソース プロバイダは、次のクエリに従って動作します。
SELECT city, hhinc FROM table WHERE pop => 50000
Spectrum Spatial は、次のクエリに従って動作します。
select city, avg(hhinc) FROM <results from the delegation> WHERE pop => 50000 GROUP BY city ORDER BY city