CQLネイティブの集計
SELECT文に一致する行のセットを処理して単一値を返します。
SELECT文に一致する行のセットを処理して単一値を返す集計関数です。データ・セット内のNull値は無視されます。集計関数を含むSELECT文のselector句に他のカラム、ユーザー定義型のカラム、または関数も指定されている場合は、クエリーに一致する最初の行の値が返されます。
注意: 複数のパーティションにわたってデータを集計すると、パフォーマンスが低下する場合があります。DataStaxでは、パーティション・キーのリストを取得するには1つのパーティションに対して集計を使用し、ユニーク・キーのリストを取得するにはSELECT DISTINCT partition_keyを使用することを推奨しています(複合キーの場合は、カラム名のコンマ区切りリストを使用してください)。
ヒント: カスタム集計はCREATE AGGREGATEを使用して定義します。
構文
aggregate_name(column_name)
- AVG
AVG(column_name)
:ターゲット・カラムのデータ型を使用してターゲット・カラムの平均値を示します。Null値は無視されます。数値カラム(tinyint、smallint、int、bigint、decimal、float、double)に対してのみ機能します。
- COUNT
COUNT(column_name)
:結果セット内のNull値を含まない行の数を示します。パーティション・キーにはNullを含めることができないため、完全な行数を取得するには、パーティション・キー・カラムを使用します。すべてのCQLデータ型のカラムに対して機能します。
- MIN
MIN(column_name)
:最小値を示します。Null値は無視されます。数値カラム(tinyint、smallint、int、bigint、decimal、float、double)に対してのみ機能します。
- MAX
MAX(column_name)
:最大値を示します。Null値は無視されます。数値カラム(tinyint、smallint、int、bigint、decimal、float、double)に対してのみ機能します。
- SUM
SUM(column_name)
:ターゲット・カラムの合計を示します。Nullは無視されます。数値カラム(tinyint、smallint、int、bigint、decimal、float、double)に対してのみ機能します。
例
以下の例は、サイクリストの例で集計を使用する方法について示しています。
平均の取得(AVG)
チームの平均タイム(秒単位)を取得します。
SELECT AVG(cyclist_time_sec) AS Average FROM cycling.team_average WHERE team_name = 'UnitedHealthCare Pro Cycling Womens Team';
結果:
average
---------
11474
(1 rows)
カウントの取得(COUNT)
United Health Care Pro Cycling Women's Teamの数値行を取得します。
SELECT count(cyclist_name) AS Row_Count FROM cycling.team_average WHERE team_name = 'UnitedHealthCare Pro Cycling Womens Team';
結果:
row_count ----------- 3 (1 rows)
最小値の取得(MIN)
United Health Care Pro Cycling Women's Teamの記録のうち最も遅いタイムを取得します。
SELECT MIN(cyclist_time_sec) AS Fastest FROM cycling.team_average WHERE team_name = 'UnitedHealthCare Pro Cycling Womens Team';
結果:
fastest
---------
11449
(1 rows)
最大値の取得(MAX)
United Health Care Pro Cycling Women's Teamの記録のうち最も速いタイムを取得します。
SELECT MAX(cyclist_time_sec) AS Slowest FROM cycling.team_average WHERE team_name = 'UnitedHealthCare Pro Cycling Womens Team';
結果:
slowest
---------
11490
(1 rows)
合計の取得(SUM)
United Health Care Pro Cycling Women's Teamの記録の全タイムの合計を取得します。
SELECT SUM(cyclist_time_sec) AS Total_Time FROM cycling.team_average WHERE team_name = 'UnitedHealthCare Pro Cycling Womens Team';
結果:
total_time
------------
34424
(1 rows)