次のテーブルに、COUNTの結果のデータ型と書式をリストしています。
モード | データ型と書式 |
---|---|
ANSI | MaxDecimalは、DBS制御ユーティリティの一般フィールド13です。 DBSControl内のMaxDecimalの値
|
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 );