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