例: ARRAYを使用した、1-D ARRAYデータ型とテーブルへの問合わせ - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データ タイプおよびリテラル

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/tpf1598412463935.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1143
Product Category
Software
Teradata Vantage

次の1-D ARRAYデータ型およびテーブルについて考えてみましょう。

CREATE TYPE item_price AS DECIMAL(7,2) ARRAY[20];
CREATE TABLE inventory (itemkind INTEGER,
                        regular_price item_price,
                        sale_price_diff item_price);

sale_price_diffとregular_priceという配列の構成要素の値が次のようになっているとします。

sale_price_diff[1:20] =  100, 200, 120, 140, 50, 160, 45, 10, 90, 100
                         50, 100, 200, 90, 250, 550, 200, 200, 50, 75
regular_price[1:20] =  50, 90, 80, 10, 45, 30, 20, 10, 90, 100, 
                       100, 300, 230, 110, 500, 550, 200, 400, 100, 150

次の問合わせは、構成要素のタイプがitem_priceの1-D ARRAYを返します。評価中、regular_price配列内の指定した適用範囲にある各構成要素を、算術関数ARRAY_SUBを使用してsale_price_diff配列の対応する構成要素と組み合わせます。

SELECT ARRAY_SUB(regular_price, sale_price_diff, 10, 20)
FROM inventory;

問合わせは、次の値を持つ1-D ARRAYを返します。

output_array[1:20] = [ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 50, 200, 30, 20, 250, 0, 0, 200, 50, 75]

次の問合わせでは、1-D ARRAY sale_price_diff内のすべての構成要素にリテラル値2が加算されます。

SELECT ARRAY_ADD(sale_price_diff, 2) FROM inventory;

この問合わせは、次の値を持つ1-D ARRAYを返します。

output_array[1:20] = [ 102, 202, 122, 142, 52, 162, 47, 12, 92, 102
                       52, 102, 202, 92, 252, 552, 202, 202, 52, 77]

次の問合わせは、ARRAYに算術演算を実行しながらフィルタ処理条件を使用する方法を示したものです。この例では、適用範囲[10:20]内で値が1000未満のすべての構成要素に2を乗じます。

SELECT ARRAY_MUL(regular_price, 2, 10, 20) FROM inventory
WHERE ARRAY_COUNT_DISTINCT(ARRAY_LT(regular_price,1000,10,20),1)>1;

この問合わせは、次の値を持つ1-D ARRAYを返します。

output_array[1:20] = [NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 200, 600, 460, 220, 1000, 1100, 400, 800, 200, 300]