16.20 - GROUP BYとウィンドウ関数 - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL関数、演算子、式および述部

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-162K-JPN
Language
日本語 (日本)

ウィンドウ関数の場合、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