English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite GROUP BY 문

SQLite GROUP BY 절을 SELECT 문과 함께 사용하여 동일한 데이터를 그룹화합니다.

GROUP BY 절은 SELECT 문에서 WHERE 절 뒤에 위치해야하며, ORDER BY 절이 사용된다면 ORDER BY 절 앞에 위치해야 합니다.

문법

GROUP BY 절은 SELECT 문에서 WHERE 절 뒤에 위치해야하며, ORDER BY 절이 사용된다면 ORDER BY 절 앞에 위치해야 합니다.

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

GROUP BY 절에서 사용할 모든 열은 column-list에 사용할 수 있습니다.

온라인 예제

다음과 같은 레코드를 가진 COMPANY 테이블을 고려해 보겠습니다.

ID        NAME        AGE        ADDRESS        SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     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        AGE        ADDRESS        SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
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           James       44          Norway      5000.0
10          James       45          Texas       5000.0

다시 한 번, 같은 문장을 사용하여 NAME 열을 기준으로 모든 레코드를 그룹화하여 다음과 같이 합니다:

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

이렇게 결과가 생성됩니다.

NAME       SUM(SALARY)
----------  -----------
Allen       15000
David       85000
James       20000
Kim         45000
Mark        65000
Paul        40000
Teddy       20000

ORDER BY 문과 GROUP BY 문을 이렇게 사용해 보겠습니다.-

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

이렇게 결과가 생성됩니다.

NAME       SUM(SALARY)
----------  -----------
Teddy       20000
Paul        40000
Mark        65000
Kim         45000
James       20000
David       85000
Allen       15000