SQLでのGROUP BY
パラメータは特定のフィールドによって一致したレコードのグループで集計情報を提供し、合計や全体値、もしくはカウント操作のため数値フィールドでよく使用されます。
例:
SELECT name,city,SUM(sales) FROM sales GROUP BY name,city
このクエリは 'name' と 'city' の2つのフィールドによって情報をグループ化し、これらの値の合計を生成します。これをCouchbase Serverでのmap/reduce関数に翻訳するには:
選択されたフィールドのリストから、計算に使用するフィールドを特定します。これらはmap()
関数によって出力される値として抽出される必要があります。
GROUP BY
句の中でフィールドのリストを特定します。これらはmap()
関数のキーの中で出力される必要があります。
グループ関数、たとえばSUM()
もしくはCOUNT()
かを調査します。ビューのreduce()
関数内で、同等機能のビルトイン関数もしくはカスタム関数を使用する必要があります。
たとえば、上記の場合には、対応するmap関数をmap()
として記述することができます:
function(doc, meta) { emit([doc.name,doc.city],doc.sales); }
これはキーとして名前と都市、そして値として売上高を出力します。SUM()
関数を使用しているので、ビルトインreduce()
関数の_sum
を使用できます。
このmap/reduceの組み合わせの例は「ビルトイン関数 _sum
」で見ることができます。
より複雑なグループ化の操作は、カスタムreduce関数を必要とします。詳細については、「カスタムReduce関数の作成」を参照してください。