例 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-31
dita:mapPath
ja-JP/xwv1596137968859.ditamap
dita:ditavalPath
ja-JP/xwv1596137968859.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