GROUP BYとウィンドウ関数 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/tpt1555966086716.ditamap
dita:ditavalPath
ja-JP/tpt1555966086716.ditaval
dita:id
B035-1145
Product Category
Software
Teradata Vantage

ウィンドウ関数の場合、GROUP BY句には、以下のものに指定されている列がすべて含まれていなければなりません。

  • SELECT句の選択リスト
  • SELECT句の選択リストのウィンドウ関数
  • QUALIFY句の検索条件のウィンドウ関数
  • RESET WHEN句内の条件

例えば、次のSELECT文の場合、選択リストの中で列Cityが指定されており、選択リストのCOUNTウィンドウ関数の中とQUALIFY句の中で列StoreIDが指定されています。どちらの列も、GROUP BY句でも指定されています。

   SELECT City, StoreID, COUNT(StoreID) OVER ()
   FROM sales_tbl 
   GROUP BY City, StoreID
   QUALIFY COUNT(StoreID) >=3;

ウィンドウ関数の場合、GROUP BYはgroup-by列に同じ値が入っているすべての行を1つの行に圧縮します。

例えば、次の文ではGROUP BY句を使用することにより、CityとStoreIDが同じ値の行をすべて1つの行に圧縮します。

   SELECT City, StoreID, COUNT(StoreID) OVER ()
   FROM sales_tbl 
   GROUP BY City, StoreID;

結果は次のようになります。

   City   StoreID  Group Count(StoreID)
   -----  -------  --------------------
   Pecos     1001                     3
   Pecos     1002                     3
   Ozona     1003                     3

GROUP BYを使用しない場合の結果は次のようになります。

   City   StoreID  Group Count(StoreID)
   -----  -------  --------------------
   Pecos     1001                     9
   Pecos     1001                     9
   Pecos     1001                     9
   Pecos     1001                     9
   Pecos     1002                     9
   Pecos     1002                     9
   Pecos     1002                     9
   Ozona     1003                     9
   Ozona     1003                     9