SQLite 클래식 튜토리얼login
SQLite 클래식 튜토리얼
작가:php.cn  업데이트 시간:2022-04-13 17:05:02

SQLite 그룹화 기준


SQLite의 GROUP BY 절은 SELECT 문과 함께 사용되어 동일한 데이터를 그룹화합니다.

SELECT 문에서는 GROUP BY 절이 WHERE 절 뒤, ORDER BY 절 앞에 옵니다.

구문

GROUP BY 절의 기본 구문은 다음과 같습니다. GROUP BY 절은 WHERE 절의 조건 뒤, ORDER BY 절 앞에 와야 합니다.

SELECT 열 목록
FROM 테이블 이름
WHERE [ 조건 ]
GROUP BY 열1, 열2....열N
ORDER BY 열1, 열2.... columnN

GROUP BY 절에서는 여러 열을 사용할 수 있습니다. 사용 중인 그룹이 열 목록에 나열되어 있는지 확인하세요.

COMPANY 테이블에 다음 레코드가 있다고 가정합니다. -------  ----------  ---------- ----------

1           Paul        32          캘리포니아  20000.0
2          Allen 25 Texas 15000.0
3 Teddy 23 NORWAY 20000.0
4 Mark 25 리치몬드 65000.0
5 데이비드 27 TEXAS 85000.0
6 KIM 22 South ON 10000.0 <>

각 고객의 총 급여를 알고 싶다면 다음과 같이 GROUP BY 쿼리를 사용할 수 있습니다.

sqlite> SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME;

다음 결과가 생성됩니다.

NAME SUM(SALARY)
------------------- --
Allen 15000.0
David 85000.0
James 10000.0
Kim 45000.0
Mark 65000.0
Paul 20000.0
Teddy 20000.0

이제 활용해보자 다음 INSERT 문을 사용하여 COMPANY 테이블에 세 개의 추가 레코드를 생성합니다.

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 );

이제 테이블에는 다음과 같이 이름이 중복된 레코드가 있습니다.

ID     NAME   — ADDRESS  SALARY
------------ ----- --- -- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3                                                                                                                   ~                                     >5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
8 Paul 24 Houston 20000.0
9 제임스 44 노르웨이 5000.0
10 제임스 45 텍사스 5000.0

동일한 GROUP BY 문을 사용하여 다음과 같이 NAME 열을 기준으로 모든 레코드를 그룹화합니다.

sqlite> SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME;

이렇게 하면 다음과 같은 결과가 생성됩니다.

NAME ​​​​연봉)
---------- -----------
Allen 15000
David 85000
James 20000
Kim 45000
Mark 65000
Paul 40000
Teddy 20000

다음과 같이 GROUP BY 절과 함께 ORDER BY 절을 사용하겠습니다.

sqlite> (SALARY)
FROM COMPANY GROUP BY NAME ORDER BY NAME DESC;

다음 결과가 생성됩니다:

NAME SUM(SALARY)
- --------- ---
테디                                                                                                    > 데이비드 85000
앨런 15000