PostgreSQL Group By

In this section, we are going to understand the working of GROUP BY clause in PostgreSQL. We also see examples of how GROUP BY clause working with SUM() function, COUNT(), JOIN clause, multiple columns, and the without an aggregate function.

The PostgreSQL GROUP BY condition is used with SELECT command, and it can also be used to reduce the redundancy in the result.

PostgreSQL GROUP BY clause

Most importantly, this clause is used to split rows into groups where the GROUP BY condition collects the data across several records and sets the result by one or more columns.

And every group can apply an aggregate function like COUNT() function is used to get the number of items in the groups, and the SUM() function is used to analyze the sum of items.

Syntax of PostgreSQL group by clause

The basic syntax of the GROUP BY clause is as follows:

    SELECT column-list    
    
    FROM table_name    
    
    WHERE [conditions ]    
    
    GROUP BY column1, column2....columnN    
    
    ORDER BY column1, column2....columnN

    The following are the parameters used in the above syntax:

    Columns-list: It is used to select the columns, which we need to group, and it could be column1, column2,…columnN.

    We can also use the additional condition of the SELECT command with the GROUP BY clause.

    In PostgreSQL, the working of GROUP BY clause is as following:

    PostgreSQL Group By

    Examples of PostgreSQL GROUP BY clause

    For our better understanding, we will take an Employee table, which we created in the earlier section of the PostgreSQL tutorial.

    PostgreSQL Group By
    • Example of GROUP BY clause without using an aggregate function

    Here, we will be using the GROUP BY clause without applying an aggregate function. So, we use the below command, which gets the records from the employee table, and groups the result through emp_id.

    SELECT emp_id  
    
    FROM employee  
    
    GROUP BY emp_id;

    Output

    After implementing the above command, we will get the below result:

    PostgreSQL Group By

    In the above example, the GROUP BY clause works similarly to the DISTINCT condition, which helps us to delete the matching rows from the result set.

    • Example of SUM() function using PostgreSQL GROUP BY Clasue

    Here, we are using the aggregate function with the GROUP BY condition.

    For example, if we want to get the sum of salary whose first_name is John in the employee table. So, we use the where clause with GROUP BY clause to get the salary of John.

    The below command is used to fetch the sum of John’s salary with the help of the GROUP BY condition:

    SELECT first_name, SUM(SALARY)     
    
    FROM employee  
    
    where first_name = 'John'  
    
    GROUP BY first_name ;

    Output

    After implementing the above command, we will get the below result:

    PostgreSQL Group By

    Note: In the employee table, we have the redundancy of first_name as john. After using this command, both the john’s salaries are merged because we use the where clause, and display the sum of the john salary.

    In the below command, we use the ORDER BY condition to display all employee’s salary in the ascending order with GROUP BY clause:

    SELECT first_name, SUM(SALARY)     
    
    FROM employee  
    
    GROUP BY first_name  
    
    ORDER BY SUM (salary) asc;

    Output

    After executing the above command, we will get the below output:

    PostgreSQL Group By
    • Example of JOIN condition using PostgreSQL GROUP BY clause

    In the below example, we use the GROUP BY clause with the INNER JOIN clause to get the sum of each employee’s salary.

    In the following command, we Join the employee table with the employee_details table and Concat (combine) the employee by their names.

    SELECT first_name || ' ' || last_name as full_name,  
    
    SUM (salary) salary  
    
    FROM employee  
    
    INNER JOIN employee_details USING (emp_id)        
    
    GROUP BY full_name  
    
    ORDER BY salary;

    Output

    After executing the above command, we will get the below result:

    PostgreSQL Group By
    • Example of Count() function using PostgreSQL GROUP BY clause

    In the below example, we use the COUNT() function to get the number of emp_id. So, we select the first_name and get the count of emp_id from the employee Table.

    SELECT first_name,  
    
    COUNT (emp_id)  
    
    FROM employee  
    
    GROUP BY first_name;

    Output

    After executing the above command, we will get the below result, where we can see that in thefirst_name column, we get the count as 2 for John.

    PostgreSQL Group By

    For each group, it returns the number of rows by using the COUNT() function. And the GROUP BY clause divides the rows in the employee into groups and groups them by value in the emp_id column.

    • Example of multiple columns using PostgreSQL GROUP BY clause

    In this, we will take one or more columns and get the records with the help of GROUP BY clause.

    In the below example, the multiple columns we are taking are emp_id and first_name using the GROUP BY clause, which separates the rows in the employee table through their values, and for each group of emp_id and first_name.And the SUM() function is used to evaluate the total salary of each employee.SELECT emp_id, first_name, SUM(salary)   FROM employee  GROUP BY first_name, emp_id  ORDER BY emp_id;  OutputAfter executing the above command, we will get the below result:


    Comments

    Leave a Reply

    Your email address will not be published. Required fields are marked *