ソート順序の計算と結果の順序 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

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

ウィンドウ指定で指定するソート順序によって関数の適用対象の行に対するソート順序が定義されますが、それによって結果の順序が定義されるわけではありません。

例えば、現行月から後の月の平均売上げを計算するには、次のように行を月別に順序付けします。

   SELECT StoreID, SMonth, ProdID, Sales,
   AVG(Sales) OVER (PARTITION BY StoreID ORDER BY SMonth
                    ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING)
   FROM sales_tbl;
   
   StoreID  SMonth  ProdID      Sales  Remaining Avg(Sales)
   -------  ------  ------  ---------  --------------------
      1001       6  C        30000.00                     ?
      1001       5  C        30000.00              30000.00
      1001       4  C        25000.00              30000.00
      1001       3  C        40000.00              28333.33
      1001       2  C        25000.00              31250.00
      1001       1  C        35000.00              30000.00
   

計算でのデフォルトの並替え順序はASCです。しかし結果は、その逆の順序で戻されます。

結果を順序付けするには、SELECT文でORDER BY句を使用します。 例えば、

   SELECT StoreID, SMonth, ProdID, Sales,
   AVG(Sales) OVER (PARTITION BY StoreID ORDER BY SMonth
                    ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING)
   FROM sales_tbl
   ORDER BY SMonth;
   
   StoreID  SMonth  ProdID      Sales  Remaining Avg(Sales)
   -------  ------  ------  ---------  --------------------
      1001       1  C        35000.00              30000.00
      1001       2  C        25000.00              31250.00
      1001       3  C        40000.00              28333.33
      1001       4  C        25000.00              30000.00
      1001       5  C        30000.00              30000.00
      1001       6  C        30000.00                     ?