데이터 조회(SELECT)

EUNSU·2022년 1월 8일
0

SQL

목록 보기
2/2

이 글은 EDWITH 강의를 기반으로 정리한 글입니다!

SELECT

데이터 조회는 데이터 조작어(DML)의 명령어 중 하나로, 데이터 분석에서 가장 많이 사용되는 명령어이다.

여러 절들과 함께 사용할 수 있으며, 분석에 필요한 데이터를 조회해준다.

  • FROM : 참고하고자 하는 테이블 명
  • WHERE : 절에 특정 조건으로 필터링
  • GROUP BY : 특정 열로 그룹화
  • HAVING : 그룹화된 테이블을 특정 조건으로 필터링
  • SELECT : 참고하고자 하는 열 선택(GROUP BY에서 선택한 열은 필수로 들어가야 한다)
  • ORDER BY : 특정 열을 기준으로 정렬(오름차순, 내림차순)

이러한 절들의 순서는 보통 SELECT ->FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY 으로 적어준다.

간단한 예제들로 각 절들을 사용해보자!

예제에 사용하는 데이터셋은 EDWITH에서 참고하시면 됩니다!

SELECT, FROM

가장 기본적인 SELECT, FROM을 통해 테이블에서 모든 열을 조회해보자.

cf) SQL에서는 실행하고자 하는 명령어마다 세미콜론(";)을 적어줘야 한다.

SELECT [컬럼] FROM [테이블]

CREATE DATABASE PRACTICE; -- PRACTICE 데이터베이스 생성

USE PRACTICE; PRACTICE 데이터베이스 활성화

SELECT * -- * : 모든 열을 보고싶어..!
  FROM CUSTOMER; -- CUSTOMER 테이블에서

위 코드는 이렇게 이해할 수 있다. CUSTOMER 테이블에서 모든 열을 조회해줘!

출력창에서 CUSTOMER 테이블의 모든 열을 조회한 것을 확인할 수 있다.

SQL은 코드가 직관적이라 이해하기 쉬운 것 같다.

WHERE

WHERER은 원하는 조건을 적어 줄 때 사용하는 절이다.
성별이 여성인 회원을 조회해보자.

WHERE [컬럼] = 조건

SELECT *
  FROM CUSTOMER
 WHERE GENDER = "WOMEN";

출력창에 성별이 여성인 회원들만 조회된 것을 확인할 수 있다.

GROUP BY

GROUP BY를 통해 원하는 컬럼을 기준으로 그룹화를 해줄 수 있다.
주의할 점은 SELECT 절에서 GROUP BY에 적은 컬럼이 들어가야 한다는 것이다. 거주지 별로 회원수가 얼마나 되는지 확인해보자.

GROUP BY [컬럼]

SELECT ADDR, COUNT(MEM_NO) AS 회원수
  FROM CUSTOMER
 WHERE GENDER = "WOMEN"
 GROUP
    BY ADDR;

거주지별로 회원수가 출력된 것을 확인할 수 있다.

위 코드에서 COUNT는 집계함수로 기준되는 컬럼 내 수를 세줄 때 사용한다. AS는 집계된 열을 다른 이름으로 출력할 때 사용한다.

AS를 사용하지 않으면 COUNT(MEM_NO)이라는 컬럼명으로 출력된다.

아까 위에서 GROUP BY로 그룹화 한 컬럼이 SELECT에 반드시 들어가야 한다고 했다. 그렇다면 SELECT에 넣지 않아주면 어떤 결과가 출력될까?

다른 열의 조회 없이 회원수에 대한 조회만 적어보면 다음과 같이 출력된다.

SELECT COUNT(MEM_NO) AS 회원수
  FROM CUSTOMER
 WHERE GENDER = "WOMEN"
 GROUP
    BY ADDR;

이번에는 MEM_NO(회원 번호)와 같이 출력을 해보자.

SELECT MEM_NO, COUNT(MEM_NO) AS 회원수
  FROM CUSTOMER
 WHERE GENDER = "WOMEN"
 GROUP
    BY ADDR;

우리는 거주지를 기준으로 회원수를 조회했지만 SELECT 절에 거주지 열을 넣지 않고 다른 열을 넣으니 다음과 같이 출력됐다. 이렇게 그룹화를 한 열을 SELECT 절에 넣지 않으면 어떤 기준으로 그룹화가 됐는지 모르기 때문에 GROUP BY 절에 사용한 컬럼을 SELECT 절에 넣어줘야 한다.

HAVING

HAVING 절에는 GROUP BY로 그룹화가 된 테이블에서 새로운 조건을 넣어줄 때 사용한다.

거주지별로 회원수를 조회하는데 회원수가 100명 이상인 거주지들만 살펴보자.

HAVING [컬럼] 조건

SELECT ADDR, COUNT(MEM_NO) AS 회원수
  FROM CUSTOMER
 GROUP
    BY ADDR
HAVING 회원수 > 100;

이번에는 성별에 관계없이 출력했기 때문에 아까보다 회원수가 많아졌다.
추가로 회원수가 100명 이하인 지역들은 출력이 안된것을 확인할 수 있다.

여기서 좀 더 보기 편하게 회원수를 오름차순/내림차순 하고 싶다면 ORDER BY 절을 사용하면 된다.

ORDER BY

오름차순/내림차순을 하고 싶은 컬럼과 오름차순/내림차순을 적어주면 된다.

위에서 진행했던 코드에 회원수를 기준으로 오름차순으로 정렬 해보자.

ORDER BY [컬럼] ASC/DESC(오름차순/내림차순)

SELECT ADDR, COUNT(MEM_NO) AS 회원수
  FROM CUSTOMER
 GROUP
    BY ADDR
HAVING 회원수 > 100
 ORDER
    BY 회원수 ASC;

회원수를 기준으로 오름차순으로 정렬된 것을 확인할 수 있다.

profile
머신러닝 엔지니어

0개의 댓글