Postgresql Group By
# PostgreSQL GROUP BY Statement
In PostgreSQL, the **GROUP BY** statement is used with the SELECT statement to group identical data together.
The GROUP BY clause in a SELECT statement is placed after the WHERE clause and before the ORDER BY clause.
### Syntax
The basic syntax of the GROUP BY clause is given below:
```sql
SELECT column-list
FROM table_name
WHERE
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN
The GROUP BY clause must be placed after the conditions in the WHERE clause and before the ORDER BY clause.
In the GROUP BY clause, you can group by one or more columns, but the grouped columns must exist in the column list.
### Example
Create the COMPANY table ((https://static.jyshare.com/download/company.sql)), with the following data:
```sql
tutorialdb# select * from COMPANY;
id | name | age | address | salary
----+-------+-----+------------+--------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall | 45000
7 | James | 24 | Houston | 10000
(7 rows)
The following example groups the data by the NAME field value to find the total salary for each person:
```sql
tutorialdb=# SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME;
This will produce the following result:
name | sum
-------+-------
Teddy | 20000
Paul | 20000
Mark | 65000
David | 85000
Allen | 15000
Kim | 45000
James | 10000
(7 rows)
Now, let's add three more records to the COMPANY table using the following statements:
```sql
INSERT INTO COMPANY VALUES (8, 'Paul', 24, 'Houston', 20000.00);
INSERT INTO COMPANY VALUES (9, 'James', 44, 'Norway', 5000.00);
INSERT INTO COMPANY VALUES (10, 'James', 45, 'Texas', 5000.00);
Now, the COMPANY table has duplicate names, and the data is as follows:
id | name | age | address | salary
----+-------+-----+--------------+--------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall | 45000
7 | James | 24 | Houston | 10000
8 | Paul | 24 | Houston | 20000
9 | James | 44 | Norway | 5000
10 | James | 45 | Texas | 5000
(10 rows)
Now, let's group the data by the NAME field value again to find the total salary for each customer:
```sql
tutorialdb=# SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME;
The result will be:
name | sum
-------+-------
Allen | 15000
David | 85000
James | 20000
Kim | 45000
Mark | 65000
Paul | 40000
Teddy | 20000
(7 rows)
The following example uses the ORDER BY clause with the GROUP BY clause:
```sql
tutorialdb=# SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME DESC;
This will produce the following result:
name | sum
-------+-------
Teddy | 20000
Paul | 40000
Mark | 65000
Kim | 45000
James | 20000
David | 85000
Allen | 15000
(7 rows)
[](#)(#)
(#)[](#)
[Volcengine Coding Plan supports mainstream large models like Doubao, GLM, DeepSeek, Kimi, MiniMax, etc., officially supplied, stable and reliable. Configuration Guide Β₯9.9/month Subscribe Now](https://maas.xfyun.cn/modelSquare?ch=maas_lm_l2E)
YouTip