例 - Teradata Database - Teradata Vantage NewSQL Engine - 集約UDF関数、例。

Teradata Vantage™ SQL演算子およびユーザー定義関数

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-30
dita:mapPath
ja-JP/drp1544241916620.ditamap
dita:ditavalPath
ja-JP/drp1544241916620.ditaval
dita:id
B035-1210
Product Category
Software
Teradata Vantage

次のテーブルの定義とデータについて考えてみます。

CREATE TABLE Product_Life
(Product_ID INTEGER,
 Product_class VARCHAR(30),
 Hours INTEGER);
SELECT * FROM Product_Life;

このSELECT文の出力は、次のとおりです。

Product_ID  Product_class                         Hours
-----------  ------------------------------  -----------
        100  Bulbs                                   100
        100  Bulbs                                   200
        100  Bulbs                                   300

次に、入力引数の標準偏差を計算する集約UDFのSQL定義を示します。

CREATE FUNCTION STD_DEV (i INTEGER)
RETURNS FLOAT
CLASS AGGREGATE (64)
SPECIFIC std_dev
LANGUAGE C
NO SQL
PARAMETER STYLE SQL
NOT DETERMINISTIC
CALLED ON NULL INPUT
EXTERNAL NAME 'ss!stddev!stddev.c!f!STD_DEV'

次の問合わせでは、集約UDF式を使用して電球の寿命の標準偏差を計算します。

SELECT Product_ID, SUM(Hours), STD_DEV(Hours)
FROM Product_Life
WHERE Product_class = 'Bulbs'
GROUP BY Product_ID;

このSELECT文の出力は、次のとおりです。

Product_ID   Sum(hours)          std_dev(hours)
-----------  -----------  ----------------------
        100          600   8.16496580927726E 001