17.10 - 結果のタイプと属性 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-171K-JPN
Language
日本語 (日本)

次のテーブルに、COUNTの結果のデータ型と書式をリストしています。

モード データ型と書式
ANSI

MaxDecimalは、DBS制御ユーティリティの一般フィールド13です。

DBSControl内のMaxDecimalの値
  • 0または15。結果タイプはDECIMAL(15,0)、書式は-(15)9。
  • 18。結果タイプはDECIMAL(18,0)、書式は-(18)9。
  • 38。結果タイプはDECIMAL(38,0)、書式は-(38)9。
Teradata INTEGERおよび書式はINTEGERのデフォルト書式です。
COUNT

DBSControl一般フィールド(80)、COUNT_modeのデフォルト値は0です。デフォルトは互換性モードで、外部アプリケーションに影響するすべての拡張機能を無効にします。

BIGINTモードとNUMBERモードはCOUNTのパフォーマンスに影響を及ぼします。

  • 型の上位変換には、モードが変更された場合、別の型を使用した計算式が必要になることがあります。これは、COUNT (*)ベースの式の結果がBIGINT/NUMBERタイプとして実体化され、後でサブ式として別の式の計算に使用される場合に発生します。パフォーマンス オーバーヘッドは、COUNT (*)をBIGINT/NUMBERとしてキャストしたときに発生するものと同じです。
  • モードが変更されるとCOUNT (*)のデータ型が変わるため、書式、タイトル、データ型を仮定した問合わせではこの変更に注意する必要があります。

COUNTの結果がオーバーフローを起こし、エラーが報告された場合には、次の例のように結果を別のデータ型にキャストできます。

   SELECT CAST(COUNT(*) AS BIGINT)
   FROM BIGTABLE;

COUNT関数とRANKウィンドウ関数について同様の例を示します。

SELECT CAST(COUNT(*) over([PARTITION/ORDER BY]) AS BIGINT)
FROM BIGTABLE; 
SELECT CAST(rank over([PARTITION/ORDER BY]) AS BIGINT)
FROM BIGTABLE;
CASTは、デフォルトまたは互換性モードに対してのみ必要です。COUNT計算のNUMBERまたはBIGINTモードに対し値1または2が指定されている場合、CASTは不要です。

次のテーブルに、COUNTの結果の初期設定タイトルをリストしています。

操作 タイトル
COUNT(x) Count(x)
COUNT(*) Count(*)

集約結合インデックス内のCOUNT指定

結合インデックスのCOUNT集約関数に対し、COUNT、FLOAT OR DECIMAL(38,0)へのCOUNTキャスト、BIGINT、またはNUMBERを指定できます。以下に、BIGINTへのデータ型キャストを格納するSHOW JOIN INDEXを示します。

CREATE JOIN INDEX TEST.j1 ,NO FALLBACK ,CHECKSUM = DEFAULT AS
SELECT COUNT (*)(BIGINT, NAMED a ),TEST.t1.a1
FROM TEST.t1
GROUP BY TEST.t1.a1
PRIMARY INDEX ( a1 );