English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
PostgreSQL에서는GROUP BY GROUP BY 절과 SELECT 문을 함께 사용하여 동일한 데이터를 그룹화합니다.
GROUP BY는 SELECT 문에서 WHERE 절 뒤에, ORDER BY 절 앞에 위치합니다.
GROUP BY 절의 기본 문법은 다음과 같습니다:
SELECT column-목록 FROM table_name WHERE [ 조건 ] GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN
GROUP BY 절은 WHERE 절의 조건 이후에, ORDER BY 절 앞에 위치해야 합니다。
GROUP BY 절에서는 한 열 또는 여러 열을 그룹화할 수 있지만, 그룹화된 열은 열 목록에 존재해야 합니다。
创建 COMPANY 테이블(下载 COMPANY SQL 파일 ),数据内容如下:
w3codeboxdb# 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)
다음 예제에서 NAME 필드 값에 따라 그룹화하여 각 사람의 급여 총액을 찾습니다:
w3codeboxdb=# SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME;
다음과 같은 결과를 얻습니다:
name | sum -------+------- Teddy | 20000 Paul | 20000 Mark | 65000 David | 85000 Allen | 15000 Kim | 45000 James | 10000 (7 rows)
이제 다음 명령어를 사용하여 CAMPANY 테이블에 세 개의 레코드를 추가합니다:
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);
이제 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 8 | Paul | 24 | Houston | 20000 9 | James | 44 | Norway | 5000 10 | James | 45 | Texas | 5000 (10 rows)
이제 NAME 필드 값에 따라 그룹화하여 각 고객의 급여 총액을 찾습니다:
w3codeboxdb=# SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME;
이 경우 얻은 결과는 다음과 같습니다:
name | sum -------+------- Allen | 15000 David | 85000 James | 20000 Kim | 45000 Mark | 65000 Paul | 40000 Teddy | 20000 (7 rows)
다음 예제에서 ORDER BY 절과 GROUP BY 절을 함께 사용합니다:
w3codeboxdb=# SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME DESC;
다음과 같은 결과를 얻습니다:
name | sum -------+------- Teddy | 20000 Paul | 40000 Mark | 65000 Kim | 45000 James | 20000 David | 85000 Allen | 15000 (7 rows)