Grouping Data with ROLLUP in PostgreSQL
Last Updated :
24 Apr, 2024
In database management, reducing and compressing data is one of the most significant jobs. PostgreSQL, which is an open-source, stable relational database management system, boosts many features that are meant to help in this regard.
Another element is ROLLUP which maintains the hierarchical data aggregation needed to yield insightful summaries of the dataset. This article is about the details of the application ROLLUP in PostgreSQL for grouping data.
What is ROLLUP?
ROLLUP is the extension of the GROUP BY function in SQL that supports multi-dimensional aggregation. It sums up the subtotals for a particular set of columns and thus determines the order in which the columns appear.
Syntax:
The syntax for using ROLLUP in PostgreSQL is as follows:
SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
GROUP BY ROLLUP(column1, column2, ...);
Here, column1, column2, etc., represent the columns used for grouping, and aggregate_function denotes the function applied to compute the aggregate values.
Example of Grouping Data with ROLLUP
Let's create a table named sales data and then insert some data into after that we will perform some query operations of grouping data with ROLLUP.
Create the table
CREATE TABLE sales (
region VARCHAR(50),
product VARCHAR(50),
sales_amount NUMERIC
);
Insert some sample data
INSERT INTO sales_data (region, product, sales_amount) VALUES
('North', 'Product A', 100),
('North', 'Product B', 150),
('South', 'Product A', 120),
('South', 'Product B', 180),
('East', 'Product A', 90),
('East', 'Product B', 130),
('West', 'Product A', 110),
('West', 'Product B', 160);
Output:
You can see the table content below:
Sales Data TableExample 1 - Grouping by region and product with ROLLUP
Query:
SELECT region, product, SUM(sales_amount) AS total_sales
FROM sales_data
GROUP BY ROLLUP(region, product);
Explanation:
- SELECT region, product, SUM(sales_amount) AS total_sales: It selects the region, product, and sum(sales_amount) which were from the sales_data table that was denoted as total_sales.
- GROUP BY ROLLUP: This statement applies the data to the columns (region and product) and sums up the rows for each of the combination of these columns. With the help of the ROLLUP function subtotals will be generated for the different level of aggregation e.g. at the product level and the product and region level.
Output:
The output would be a total of sales each product by region, sales standing of each region and total sales.
Grouping by region and productExample 2 - Grouping by Region with Subtotals
Query:
SELECT region, SUM(sales_amount) AS total_sales
FROM sales_data
GROUP BY ROLLUP(region);
Explanation:
- SELECT region, SUM(sales_amount) AS total_sales: It picks up two columns region and sum of sales_amount from the sales_data table which is aliased as total_sales.
- GROUP BY ROLLUP(region): It does group the data on the basis of the region column and sums up the subtotals as per the aggregation of the ROLLUP function. In this case, it will generate subtotals for each level of region, including the grand total.
Output:
The output will show the total sales for each individual region, subtotals for combinations of regions, and the overall total sales.
Grouping by Region Example 3 - Grouping by Product with Subtotals
SELECT product, SUM(sales_amount) AS total_sales
FROM sales_data
GROUP BY ROLLUP(product);
Explanation:
- SELECT product, SUM(sales_amount) AS total_sales: There are two columns named product and the subtotal of sales_amount. They are named as total_sales which comes from the sales_data table.
- GROUP BY ROLLUP(product): This aggregates the data according to the product column, and subsequently, it computes subtotals for each layer of aggregation declared by the ROLLUP function. Thus, at each product level, it will show subtotals and the overall total.
Output:
The output will demonstrate the total sales figure for each product alone, find the subtotals for a combination of products, and provide the overall total sales.
Grouping by Product Example 4 - Grouping by Region and Product Category with Subtotals
Query:
SELECT region, product, SUM(sales_amount) AS total_sales
FROM sales_data
GROUP BY ROLLUP(region, product);
Explanation:
- SELECT region, product, SUM(sales_amount) AS total_sales: It chooses three columns region, product, and total_sales which is an alias for the sale_data table.
- GROUP BY ROLLUP(region, product): It groups the data under both region and product columns and returns sub totals determined by the ROLLUP function. In this instance, it will obtain subtotals for each region and product grouping, as well as subtotals for each region and the grand total.
Output:
These results will be displayed as the sum of sales for different regions and products, the regions subtotals, as well as the grand total of sales.
Grouping by Region and Product Conclusion
ROLLUP in PostgreSQL is a valuable feature for grouping and summarizing data hierarchically. By leveraging its capabilities, users can efficiently generate insightful summary reports with minimal effort. Understanding its syntax, interpreting results, and considering its limitations are crucial for harnessing the full potential of ROLLUP in PostgreSQL-based database environments. Mastering ROLLUP empowers database professionals to perform comprehensive data analysis and derive meaningful insights from their datasets.
Similar Reads
SQL Interview Questions Are you preparing for a SQL interview? SQL is a standard database language used for accessing and manipulating data in databases. It stands for Structured Query Language and was developed by IBM in the 1970's, SQL allows us to create, read, update, and delete data with simple yet effective commands.
15+ min read
SQL Tutorial SQL is a Structured query language used to access and manipulate data in databases. SQL stands for Structured Query Language. We can create, update, delete, and retrieve data in databases like MySQL, Oracle, PostgreSQL, etc. Overall, SQL is a query language that communicates with databases.In this S
11 min read
Non-linear Components In electrical circuits, Non-linear Components are electronic devices that need an external power source to operate actively. Non-Linear Components are those that are changed with respect to the voltage and current. Elements that do not follow ohm's law are called Non-linear Components. Non-linear Co
11 min read
SQL Commands | DDL, DQL, DML, DCL and TCL Commands SQL commands are crucial for managing databases effectively. These commands are divided into categories such as Data Definition Language (DDL), Data Manipulation Language (DML), Data Control Language (DCL), Data Query Language (DQL), and Transaction Control Language (TCL). In this article, we will e
7 min read
SQL Joins (Inner, Left, Right and Full Join) SQL joins are fundamental tools for combining data from multiple tables in relational databases. Joins allow efficient data retrieval, which is essential for generating meaningful observations and solving complex business queries. Understanding SQL join types, such as INNER JOIN, LEFT JOIN, RIGHT JO
6 min read
Normal Forms in DBMS In the world of database management, Normal Forms are important for ensuring that data is structured logically, reducing redundancy, and maintaining data integrity. When working with databases, especially relational databases, it is critical to follow normalization techniques that help to eliminate
7 min read
Spring Boot Tutorial Spring Boot is a Java framework that makes it easier to create and run Java applications. It simplifies the configuration and setup process, allowing developers to focus more on writing code for their applications. This Spring Boot Tutorial is a comprehensive guide that covers both basic and advance
10 min read
ACID Properties in DBMS In the world of DBMS, transactions are fundamental operations that allow us to modify and retrieve data. However, to ensure the integrity of a database, it is important that these transactions are executed in a way that maintains consistency, correctness, and reliability. This is where the ACID prop
8 min read
Class Diagram | Unified Modeling Language (UML) A UML class diagram is a visual tool that represents the structure of a system by showing its classes, attributes, methods, and the relationships between them. It helps everyone involved in a projectâlike developers and designersâunderstand how the system is organized and how its components interact
12 min read
Backpropagation in Neural Network Back Propagation is also known as "Backward Propagation of Errors" is a method used to train neural network . Its goal is to reduce the difference between the modelâs predicted output and the actual output by adjusting the weights and biases in the network.It works iteratively to adjust weights and
9 min read