흰 스타렉스에서 내가 내리지

SQL 문법 기초 2 - SELECT 관련 본문

SQL

SQL 문법 기초 2 - SELECT 관련

주씨. 2022. 7. 27. 21:17
728x90

SELECT 문에서는, 

결과의 정렬을 위한 ORDER BY,

결과의 개수를 제한하는 LIMIT,

중복된 데이터를 제거하는 DISTINCT 등을 사용할 수 있다. 

 

GROUP BY는 지정한 열의 데이터들을 같은 데이터끼리는 묶어서 결과를 추출하고, 

HAVING 절을 통해 조건식을 추가할 수 있다. 

 

 

 

ORDER BY

SELECT 열_이름
    FROM 테이블_이름
    WHERE 조건식
    GROUP BY 열_이름
    HAVING 조건식
    ORDER 열_이름
    LIMIT 숫자

ORDER BY 는 결과의 값이나 개수에 대해서는 영향을 미치지 않지만, 결과가 출력되는 순서를 조절한다. 

 

 

debut_date가 늦은 순서대로 정렬하려면, 제일 뒤에 DESC라고 붙여주면 된다. 

기본값은 ASC이다.

 

 

 

정렬 기준은 1개 열이 아니라 여러 개 열로 지정할 수 있다. 

우선 첫 번째 지정 열로 정렬한 후에 동일한 경우에는 다음 지정 열로 정렬할 수 있다. 

 

 

 

 

LIMIT

LIMIT는 출력하는 개수를 제한한다.

전체 중 앞에서 3건만 조회한다. 

 

 

이렇게 아무런 조건 없이 앞에서 3건만 뽑는 경우는 별로 없다. 

먼저 정렬한 후 앞에서 몇 건을 추출하는 것이 대부분이다. 

 

 

LIMIT의 형식은 LIMIT 시작, 개수 이다.

 = 키가 큰 순으로 정렬하되, 3번째부터 2건만 조회하라.

 

 

 

DISTINCT

DISTINCT는 조회된 결과에서 중복된 데이터를 1개만 남긴다. 

 

 

 

 

GROUP BY

GROUP BY 절은 말 그대로 그룹으로 묶어주는 역할을 한다. 

 

 * GROUP BY와 함께 주로 사용되는 집계함수(aggregate function)

SUM() : 합계

AVG() : 평균

MIN() : 최소값

MAX() : 최대값

COUNT() : 행의 개수

COUNT(DISTINCT) : 행의 개수 (중복 x)

 

 

사용 예시: 

각 회원(mem_id) 별로 구매한 개수(amount)를 합쳐서 출력하기 위해서는 집계 함수인 SUM()과 GROUP BY 절을 사용한다. 

즉, GROUP BY 로 회원 별로 묶어준 후에 SUM() 함수로 구매한 개수를 합치면 된다. 

 

 

 

SUM()

회원이 구매한 개수(amount)를 합쳐서 출력

 

alias를 이용하여 결과를 보기 좋게 만들기

 

 

회원이 구매한 금액의 총합 구해보기

SUM 함수 내에 저렇게 연산을 추가해도 된다. 

 

 

AVG()

AVG 함수 사용 예시

 

각 회원이 한 번 구매시 평균 몇 개를 구매했는지

 

 

COUNT()

COUNT(*)는 모든 행의 개수를 세고,

COUNT(열_이름)은 열 이름의 값이 NULL인 것을 제외한 행의 개수를 셉니다.

 

 

HAVING()

WHERE 대신에 사용되는 것이 HAVING이다. 

HAVING은 WHERE와 비슷한 개념으로 조건을 제한하는 것이지만, 집계 함수에 대해서 조건을 제한하는 것이라고 생각하면 된다. 

HAVING은 꼭 GROUP BY 다음에 나와야 한다. 

총 구매액이 1000이상인 회원 구하기

 

ORDER BY 와 함께 사용하기