SQLite-GROUP BY 절

SQLite GROUP BY 절은 SELECT 문과 협력하여 동일한 데이터를 그룹으로 배열하는 데 사용됩니다.

GROUP BY 절은 SELECT 문에서 WHERE 절 뒤에 나오며 ORDER BY 절 앞에옵니다.

통사론

다음은 GROUP BY 절의 기본 구문입니다. GROUP BY 절은 WHERE 절의 조건을 따라야하며 ORDER BY 절이 사용되는 경우 앞에 와야합니다.

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

GROUP BY 절에 둘 이상의 열을 사용할 수 있습니다. 그룹화하는 데 사용하는 열이 무엇이든 해당 열이 열 목록에서 사용 가능해야합니다.

다음 레코드가있는 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

다음과 같이 GROUP BY 절과 함께 ORDER 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