Last Updated : 12 Jul, 2025
The GROUP BY clause in PostgreSQL is an essential tool that allows us to group rows that share the same values in one or more columns. This powerful functionality is commonly used to perform aggregate calculations such as SUM(), COUNT(), AVG(), and more, enabling us to summarize data efficiently.
In this article, we will explain the usage of the GROUP BY clause in PostgreSQL, explore practical examples, and understand how to effectively use it with aggregate functions.
What is PostgreSQL GROUP BY clause ?The GROUP BY clause groups rows in a table based on the values of one or more specified columns. After grouping, aggregate functions such as SUM(), COUNT(), and AVG() are applied to each group to calculate summary statistics. This allows us to generate more meaningful insights from our data. Whether we are analyzing sales transactions, counting occurrences, or calculating averages, the GROUP BY clause plays a key role in SQL queries.
Syntax
SELECT
column_1,
column_2,
computing_function(column_3)
FROM
table_name
GROUP BY
column_1,
column_2;
Key Terms
Note: It is important to note that The GROUP BY clause must exactly appear after the FROM or WHERE clause. Additionally, any column that is not used in an aggregate function must appear in the GROUP BY clause.
Examples of the GROUP BY Clause in PostgreSQLFor the better understand of this article we will be using the sample DVD rental database, which is explained here and can be downloaded by clicking on this link in our examples. Let us take a look at some of the examples of the GROUP BY clause in PostgreSQL to better understand the concept.
Example 1: Grouping Data by Customer IDHere we will query for data from the payment table and group the result by 'customer_id' from the "payment" table of our sample database. This query will return a list of unique customer IDs.
Query:
SELECT
customer_id
FROM
payment
GROUP BY
customer_id;
Output
Example 2: Calculating Total Amount Paid by Each CustomerHere we will query to get the amount that each customer has paid till date and use an aggregate function (ie SUM()), to do so and group them by 'customer_id' from the "payment" table of the sample database.
Query:
SELECT
customer_id,
SUM (amount)
FROM
payment
GROUP BY
customer_id;
Output
Example 3: Counting Payment Transactions Processed by Each StaffIn this example, we will count the number of payment transactions processed by each staff member. We will group the rows in the payment
table based on 'staff_id
'
and use the COUNT
()
function to get the number of transactions. This query will return the number of transactions processed by each staff member.
Query:
SELECT
staff_id,
COUNT (payment_id)
FROM
payment
GROUP BY
staff_id;
Output
Important Points About GROUP BY clause in PostgreSQLGROUP BY
clause is used to aggregate data based on one or more columns.GROUP BY
clause must appear after the FROM
and WHERE
clauses in a SQL query. The order of execution ensures that data is filtered before being grouped.GROUP BY
clause or aggregate functions can be included in the SELECT
statement.The GROUP BY clause in PostgreSQL is a powerful feature for summarizing data based on one or more columns. By using aggregate functions like SUM(), COUNT(), and AVG(), we can perform essential data analysis within our SQL queries. Whether we are summarizing payments, counting transactions, or calculating averages, mastering the GROUP BY clause is essential for effective data analysis in PostgreSQL.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4