Aggregation and Projections
Discover how to use aggregation functions (e.g., COUNT, SUM) and project data into custom formats for analysis.
Aggregation and Projections is a free Neo4j Graph Database Fundamentals lesson on CoddyKit — lesson 2 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Neo4j Graph Database Fundamentals learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Analyze Your Graph Data
Welcome to Aggregation and Projections! In graph databases, you often need to do more than just find data; you need to summarize it or shape it for analysis.
Aggregation means calculating a single result from multiple items, like counting all nodes or finding the average age. Projection is about selecting and formatting the data you want to see in your results.
Selecting Data with RETURN
The RETURN clause is how you specify exactly what data you want to see from your query. You can return nodes, relationships, or their specific properties. Let's add some example data first, then try a basic projection.
CREATE (p1:Person {name: 'Alice', age: 30})
CREATE (p2:Person {name: 'Bob', age: 25})
CREATE (p3:Person {name: 'Charlie', age: 30})
CREATE (m1:Movie {title: 'Inception', releaseYear: 2010})
CREATE (m2:Movie {title: 'Dunkirk', releaseYear: 2017})
CREATE (m3:Movie {title: 'Interstellar', releaseYear: 2014})
MATCH (p:Person)
RETURN p.name, p.ageCustomizing Output with AS
The default property names might not always be clear in your results. The AS keyword lets you rename returned items to make your query output more readable and descriptive. This is part of projection.
MATCH (m:Movie)
RETURN m.title AS FilmTitle, m.releaseYear AS YearReleasedCounting All Items with COUNT(*)
Aggregation functions help you summarize data. One of the most common is COUNT(*), which tells you the total number of items (nodes, relationships, or paths) found by your MATCH pattern.
MATCH (p:Person)
RETURN COUNT(*) AS TotalPeopleCountCounting Unique Values
What if you only want to count the unique values for a specific property? Use COUNT(DISTINCT variable.property). This is great for finding how many different ages, titles, or categories exist in your graph.
MATCH (p:Person)
RETURN COUNT(DISTINCT p.age) AS UniqueAgesCountSumming and Averaging Numbers
For numeric properties, you can calculate sums and averages. SUM() adds up all values, and AVG() computes their mean. These functions are very powerful for numerical analysis.
MATCH (p:Person)
RETURN SUM(p.age) AS TotalAgeSum, AVG(p.age) AS AverageAgeFinding Extremes with MIN/MAX
The MIN() and MAX() functions let you find the smallest and largest values for a property within your matched data. This is useful for identifying outliers or understanding data ranges.
MATCH (p:Person)
RETURN MIN(p.age) AS YoungestPersonAge, MAX(p.age) AS OldestPersonAgeGrouping into Lists with COLLECT
The COLLECT() function gathers all values of a specified property into a list. This is often used with grouping (which we'll cover later) but can also simply return all collected items in a list.
MATCH (p:Person)
RETURN COLLECT(p.name) AS AllPersonNamesStructuring Results with Maps
You can project complex, structured data using map projections. This allows you to create custom objects (maps) in your results, combining multiple properties and even calculated values into a single output column.
MATCH (p:Person)
RETURN {fullName: p.name, yearsOld: p.age, isAdult: p.age >= 18} AS PersonSummaryQuick Aggregation & Projection Check
Let's test your understanding of Cypher aggregation and projection. Choose all statements that correctly apply these concepts.
Recap: Aggregating & Projecting
Great job! You've learned how to summarize and shape your graph data using Cypher.
- Projections with
RETURNallow you to select specific data, rename it withAS, or create structured maps. - Aggregation functions like
COUNT(),SUM(),AVG(),MIN(),MAX(), andCOLLECT()help you analyze and summarize large datasets into meaningful insights.
These techniques are fundamental for extracting valuable information from your Neo4j graphs!
Frequently asked questions
Is the “Aggregation and Projections” lesson free?
Yes — the full text of “Aggregation and Projections” is free to read here on the web, and the Neo4j Graph Database Fundamentals course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Neo4j Graph Database Fundamentals course, upgrade to CoddyKit PRO.
What will I learn in “Aggregation and Projections”?
Discover how to use aggregation functions (e.g., COUNT, SUM) and project data into custom formats for analysis. You practise Neo4j Graph Database Fundamentals with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Neo4j Graph Database Fundamentals?
No prior experience is required. Neo4j Graph Database Fundamentals on CoddyKit is structured for beginners through advanced learners; this is — lesson 2 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Aggregation and Projections” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Neo4j Graph Database Fundamentals lesson?
Yes. Every Neo4j Graph Database Fundamentals lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Filtering and Ordering Results
- Aggregation and Projections
- Updating and Deleting Graph Data
- Combining Queries with WITH and UNION