本文へスキップ
BecomeCoder

Neo4jコース · 第6章 集計と高度なクエリ · レッスン30

集計関数 ― sum / avg / min / max

ブラウザで完結

導入

count() 以外にも、数値を合計・平均・最小・最大で集計する関数が用意されています。

説明

MATCH (a:Person)-[:ACTED_IN]->(m:Movie)
RETURN a.name AS actor, avg(m.released) AS avgReleaseYear

このクエリは、俳優ごとに出演した映画の公開年の平均を求めます。

主な集計関数は次のとおりです。

関数意味
count(x)件数を数える
sum(x)合計を求める
avg(x)平均を求める
min(x)最小値を求める
max(x)最大値を求める
MATCH (m:Movie)
RETURN count(m) AS totalMovies, min(m.released) AS oldest, max(m.released) AS newest

このクエリは、データベース内の全映画について、本数・最も古い公開年・最も新しい公開年を一度に求めます。RETURN にすべて集約関数だけを並べると、グルーピングする列がないため、全体で1つのグループとして集計されます。

これらの集計関数は、MATCH で探し当てたグラフのパターンに対してそのまま使えるのが特徴です。RDBのように別途集計用のテーブルを用意しなくても、「つながりをたどりながら、その場で数える」ことができます。

実際に動かしてみよう

下のエディタに Cypher を書いて「実行」を押すと、ブラウザ内の学習用グラフDBで結果が表示されます(本物のNeo4jではなく、教材の範囲を再現した軽量な自作エンジンです)。最初から「映画と俳優+小さなソーシャルグラフ」が入っているので、MATCH 系の例はそのまま結果が返ります。CREATE / MERGE / SET などで書き換えた状態は積み重なり、「グラフを初期状態に戻す」でいつでもサンプルに戻せます。

Cypher — ブラウザ内で実行(学習用グラフDB)

Cypherクエリを書いて実行できる学習用グラフDBを読み込みます(本物のNeo4jではなく、教材の範囲を再現した軽量な自作エンジンです。映画と俳優の小さなサンプルグラフが最初から入っています)。
スクロールして表示された時点でも自動で読み込まれます。