티스토리 뷰
반응형
DISTINCT
데이터가 중복되는 것을 막을 때 사용
학생들의 고향을 출력하고 싶을 때
SELECT
DISTINCT hometown
FROM
student;
중복을 제거하고 싶은 칼럼의 이름 앞에 DISTINCT 키워드를 붙이면 된다.
SELECT
DISTINCT hometown, grade -- grade: 학년
FROM
student;
위의 출력값은 어떻게 될까?
hometown은 중복제거를 하지만, age는 중복제거를 하지 않는다.
대전 | 20 |
대전 | 20 |
대전 | 21 |
대전 | 20 |
대전 | 21 |
위의 테이블이 있다면 아래 처럼 출력된다.
COUNT
레코드를 수를 셀 때 사용하는 함수
student 테이블에서 전체 데이터 수를 셀 때 사용하는 함수
SELECT
COUNT(*)
FROM
student;
이런 COUNT는 집약 함수라고 불리기도 한다.
집약 함수의 종류
함수 | 사용 |
COUNT(*) COUNT(COLUMN 이름) |
레코드의 수를 계산 |
SUM(COLUMN 이름) | COLUMN의 합계를 계산 |
MAX(COLUMN 이름) | COLUMN의 최댓값 |
MIN(COLUMN 이름) | COLUMN의 최솟값 |
AVG(COLUMN 이름) | COLUMN의 평균 |
💡 집약 함수의 결과는 1행으로 출력된다
student 테이블에서 2학년의 평균키를 계산하는 쿼리
SELECT
AVG(height) AS 키 -- height를 키로 표시
FROM
student
WHERE
grade = 2; -- 2학년
집약 함수를 사용할 때 주의점
- 집약 함수는 SELECT, HAVING, ORDER BY 뒤에만 사용할 수 있다
- 여러 개의 값을 반환하는 것과는 함께 사용될 수 없다
- COUNT 이외에 SUM, MAX, MIN, AVG는 NULL 값을 반영하지 않는다
- SUM을 계산할 때 NULL 값은 더해지지 않는다. 하지만 COUNT에는 NULL 값이 계산된다. 따라서 AVG는 총 합을 계산할 때 NULL 값이 무시되지만, 나눌 때는 NULL 값이 무시되지 않아 값이 예상과는 달라질 수 있다.
각 학년마다 평균 키를 출력하고 싶을 때
SELECT
grade, AVG(height) AS 키 -- height를 키로 표시
FROM
student
GROUP BY
grade; -- 학년을 기준으로 그룹화
💡 NULL 값도 그룹화가 된다. 위의 예제에서 grade에 NULL이 있었다면 grade가 NULL인 그룹으로 묶이게 된다
GROUP BY가 사용될 때 SELECT 뒤에 올 수 있는 값
- 상수
- 집약 함수
- GROUP BY의 기준이 되는 COLUMN
GROUPBY 뒤에 여러개의 COLUMN 이름이 올 때
⇒ 순차적으로 GOUPBY를 실행한다
WHERE과 함께 GROUP BY가 사용될 때
⇒ WHERE을 먼저 적용하고 GROUP BY를 적용한다.
HAVING
그룹에 조건을 줄 때 사용
⇒ 그룹에 조건을 줘야 하기 때문에 HAVING을 사용한다
HAVING 뒤에 올 수 있는 값
- 상수
- 집약 함수
- HAVING의 기준이 되는 COLUMN
HAVING VS WHERE
💡 WHERE은 레코드에 대해 조건을 걸 때 사용하고, HAVING은 그룹에 대해 조건을 걸 때 사용한다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- hashcode
- string
- pm.expect
- github
- postman collection
- squash merge
- mysql
- 확장 함수
- postman tests
- python3
- postman
- 주생성자
- Kotlin In Action
- 1차 인터뷰
- go 특징
- Squash and merge
- DGS Framework
- Python
- 2차 인터뷰
- pm.test
- Basic Type
- solidity
- graphql
- git
- 코틀린
- Kotlin
- 네이버 2022 공채
- java
- 코딩테스트
- downTo
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함