도서/모두를 위한 postgreSQL

Day11. 데이터 그룹화

joje* 2023. 8. 5. 16:37

1. DISTINCT 

: 테이블에서 중복되는 데이터를 없애는 명령어

  • SELECT DISTINCT item_type FROM rating

2. GROUP BY

: 원하는 자료를 그룹화하는 명령어

: DISTINCTI 함수와 달리 집계함수(count()..)를 사용할 수 있고, 집계 연산 이후에 HAVING 절로 조건에 맞는 정보를 걸러낼 수 있다.

: 집계함수를 이용한다는 의미는 새로운 관계를 갖고 있는 가상의 결과를 만들어 낸다는 의미와 같다.

  • SELECT item_type FROM rating GROUP BY item_type;
  • SELECT item_type, count(*) FROM rating GROUP BY item_type;

3. HAVING 

: 집계를 완료한 데이터에서 원하는 조건만 검색할 수 있도록 도와준다.

: WHERE 문은 집계함수 실행 전 데이터를 조회할 때, HAVING 문은 집계함수 실행 수 데이터를 조회할 때 많이 이용한다

: WHERE 문의 경우 집계함수의 실행 전 데이터를 조회하므로 HAVING 문에 비해 실행속도가 빠르다.

  • SELECT item_type, count(*) FROM rating GROUP BY item_type HAVING count(*) > 3;
  • SELECT item_type, count(*) FROM rating WHERE item_type LIKE 'r%' GROUP BY item_type HAVING count(*) > 3;

4. SQL 명령어 우선 순위

 

5. 집계함수

: 집계함수의 입력은 여러 개의 로우이고, 출력은 데이터 한 개를 의미한다.

: 집계함수를 사용하기 위해서는 group by 함수가 반드시 선행 작성되어야 한다.

6. 불리언 연산 집계함수

: 데이터 타입이 불리언일 때만 사용가능

  • SELECT bool_and(is_spicy) FROM ramen;

7. 배열을 담는 집계함수

  • SELECT array_agg(name) FROM canned_food;
  • SELECT id,weight, array_agg(name) FROM canned_food GROUP BY 1,2 ORDER BY 1;

8. JSON 집계함수