안녕하세요. 곰 옥수수 입니다.
오늘은 group by절에 대해서 정리해보도록 하자!
GROUP BY절은 속성 값을 그룹으로 분류하고자 할 때 사용한다.
주로 그룹으로 묶는 경우는 합계, 평균, 개수 등을 처리할 때 사용하기 때문에 집계 함수와 함께 사용한다.
(집계함수: SUM, MIN, MAX, COUNT, AVG 등등.. 다음에 정리하도록 하자.)
GROUP BY절에서도 HAVING절을 통해 조건식을 추가할 수 있다.
HAVING절은 GROUP BY에 의해 분류한 그룹에 대한 조건을 지정할 때 사용한다.
어떻게 보면 조건을 준다는 점에서 WHERE문과 비슷하지만 GROUP BY와 함께 사용되는 것이 차이점이다.
기본 GROUP BY절
Q. 성('name')을 기준으로 가입되어 있는 유저의 개수(count)를 알고 싶다.
그 과정에 대해서 정리해보자.
1. USER에는 유저의 정보가 담겨있고 아래처럼 데이터가 담겨있다.
2. GROUP BY없이 유저의 name과 그 개수(count)를 알아보면, 전체 개수(count)에 대해서만 알 수 있다.
하지만 나는 성('name')을 기준으로 가입되어 있는 유저의 개수(count)를 알고 싶다.
이때 사용하는 것이GROUP BY이다.
하지만 나는 name을 기준으로 그룹화 해서 개수를 알고 싶다.
그때 GROUP BY절을 이용하여 이름별(name)로 묶어준 후 count( )함수를 이용하여 개수를 구해주면된다.
그러면 이름별(name)로 개수를 구할 수 가있다.
GROUP BY, Column 여러개 주기
Q. 수강course별 결제방법 별 개수들을 구하고 싶다. 구해보자.
orders는 주문 (수강등록) 정보가 들어있다.
잘못된 SQL) 수강 코스별로 그룹으로 묶어주고 결제정보의 개수를 구해봤다.
수강코스별 전체 카운트는 구해졌지만 나는 코스별 결제정보들의 개수를 구하고 싶다!
옳바른 SQL) 그러면 그룹을 수강코스와, 결제정보를 묶어준 후 개수를 구해야한다.
이렇게 하면 내가 원하는 정보를 구할 수 있었다.
GROUP BY와 HAVING
Q. 위 데이터를 이어서 위에 정보에서 코스가 '앱개발 종합반' 인 데이터에 대한 정보만 보고싶다.
이때, HAVING을 이용하여 GROUP조건으로 분류한 그룹에 대한 조건을 지정해준다.
그러면 WHERE는 안되는 것인가?
- WHERE를 GROUP BY 다음에 사용하면 에러가 발생한다.
올바른 구문을 확인 하라는 에러가 발생한다.
왜 GROUP BY다음에 조건으로 WHERE가 사용이 안될까?
그 이유는 SELECT명령어는 구분절이 있는데 이를 정확한 문법 순서에 맞게 작성해줘야한다.
절에 대한 문법에 순서는 아래와 같다.
1. SELECT절 : 테이블에서 출력할 컬럼을 명시하기 위해 사용
2. FROM절 : 질의에 의해 검색될 데이터들을 포함하는 테이블 명을 기술
3. WHERE절 : 검색할 조건(비교, 범위, 집합, 패턴, NULL, 복합조건)
4. GROUP BY절: 속성값을 그룹으로 분류하고자 할 때 사용
5. HAVING절 : GROUP BY에 의해 분류한 후 그룹에 대한 조건 지정 시 사용
6. ORDER BY 절: 조회된 데이터의 값을 정렬하고자 할때( ASC:오름차순, DESC:내림차순)
이것을 어긴다면 에러가 발생한다.
그렇다면 SQL의 실행 순서는 문법 순서와 같은가?
그건 아니다. SQL의 실행순서는 아래와 같다.
1. FROM : 각 테이블 확인
2. ON : 조인 조건 확인
3. JOIN : 테이블 조인 (병합)
4. WHERE : 데이터 추출 조건 확인
5. GROUP BY : 특정 칼럼으로 데이터 그룹화
6. HAVING : 그룹화 이후 데이터 추출 조건 확인
7. SELECT : 데이터 추출
8. DISTINCT : 중복 제거
9. ORDER BY : 데이터 정렬
[SQL] DDL, DML, DCL 이란? 무엇일까? + 간단정리
DDL이란? DML이란? DCL이란? 안녕하세요. 곰 옥수수입니다. ₍ᵔ๑・ᴥ・ᵔ₎ 오늘은 DDL, DML, DCL에 대해 간략하게 알아보도록 하겠습니다. 지금은 간략하게 정리하고 다음에 세부적으로 정리해보도
bears-paw.tistory.com
[SQL] SQL의 중복 데이터 제거인 Distinct 와 사용법!
안녕하세요. 곰 옥수수 입니다. ₍ᵔ๑・ᴥ・ᵔ₎ 저도 SQL을 틈틈히 공부하고 있는데 오늘은 중복데이터 제거인 Distinct란 무엇이며 그 사용방법에 대해서 알아볼게요. Distinct - 영어로 '분명한'(
bears-paw.tistory.com
[SQL] Join 개념과 Join사용법 정리(Inner Join, Outer Join, Cross Join, Self Join ... )
안녕하세요. 곰 옥수수입니다. 오늘은 Join 개념과 Join 실습을 통해 Join 사용법을 정리 해보도록 하겠습니다. 개념부터 실습까지 차례로 정리하겠습니다. Join개념 조인(Join)은 두 개 이상의 테이블
bears-paw.tistory.com
'프로그래밍 > SQL' 카테고리의 다른 글
[SQL] WITH 에 대해서 정리해보자. (0) | 2023.01.15 |
---|---|
[SQL] 서브쿼리(Subquery) 와 그 사용법 정리 (0) | 2023.01.14 |
[SQL] Join 개념과 Join사용법 정리(Inner Join, Outer Join, Cross Join, Self Join ... ) (0) | 2023.01.12 |
[SQL] SQL의 중복 데이터 제거인 Distinct 와 사용법! (0) | 2022.12.27 |
[SQL] DDL, DML, DCL 이란? 무엇일까? + 간단정리 (2) | 2022.12.21 |
댓글