この例では、選択リストのエントリのスパンをグループ化するEXPAND ON句の使用方法を示します。
まず、stockテーブルを作成します。
CREATE SET TABLE stock ( stock_id INTEGER, stock_quantity INTEGER, begin_end_date PERIOD(DATE)) PRIMARY INDEX (stockid);
stock tableテーブルには、次の行が含まれます。
stock_id | stock_quantity | begin_end_date |
---|---|---|
100 | 200 | 2005-10-10,2005-11-15 |
101 | 20 | 2005-06-01,2005-08-31 |
この例は、毎月行なうstock_quantity列の重み付きの平均を計算する方法を示しています。
udf_agspanは集約UDFで、ある年の指定の月の在庫数を追加し、その合計をその月の日数で割るものと仮定します。行が月全体に広がっていないと、AVG関数と比較した場合に異なる結果を提供します。
SELECT udf_agspan(stock_quantity, EXTRACT(YEAR FROM BEGIN(expdcol)), EXTRACT(MONTH FROM BEGIN(expdcol))) (FORMAT ‘-----9.999’) AS wavg, EXTRACT(YEAR FROM BEGIN(expdcol) AS yr, EXTRACT(MONTH FROM BEGIN(expdcol) AS mn, stock_id FROM (SELECT stock.*, expdcol FROM stock EXPAND ON begin_end_date AS expdcol BY INTERVAL '1'DAY) AS dt GROUP BY 2,3,4;
この文は、次の行を返します。
wavg | yr | mn | stock_id |
141.935 | 2005 | 10 | 100 |
93.333 | 2005 | 11 | 100 |
20.000 | 2005 | 06 | 101 |
20.000 | 2005 | 07 | 101 |
19.355 | 2005 | 08 | 101 |