Algorithm/SQL

[SQL] DataCamp 수강 (1)

호찌민 2021. 3. 8. 19:47

SQLD 자격증 취득한지 9개월 정도 되었다. 공모전, 프로젝트 등을 하면서 모두 정형화된 데이터라 SQL을 사용할 일이 많이 없었고 자연스레 기억 속에서 SQL은 잊혀져갔다. 🤣 데이터 분석가라면 필수적으로 사용해야 하기도 하고

코딩테스트도 준비해야 할 겸 무조건 해야겠다는 생각이 들어서 은혁이와 함께 DataCamp 수강을 신청했다. 😁

앞으로 이 공간은 SQL에 관한 모든 지식들을 정리할 예정이다. 주로 함수 사용법에 대해 정리할 듯 하긴 하다. 🙃


쿼리 실행 순서 : FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

깔끔한 쿼리 작성 법 : FROM, WHERE 등은 대문자로, 컬럼명 등은 소문자로 작성, 다수의 컬럼명을 활용할 때에는

아래 방향으로 작성.

SELECT name
FROM student;

SELECT

지정해준 컬럼들 추출해주는 함수

 

  • TOP(N) : 상위 N개 결과 반환
  • TOP(N) PERCENT : 상위 N% 결과 반환
  • DISTINCT : 고유값 반환
  • AS(ALIAS) : 결과창에 나타날 컬럼명 지정

[집계 함수]

  • SUM(컬럼명) : 컬럼 값들의 합을 반환
  • MIN/MAX/AVG(컬럼명) : 컬럼 값들의 최소값, 최대값, 평균 값 반환 
  • COUNT(컬럼명) : 컬럼의 갯수 반환
  • LEN(컬럼명) : 컬럼의 값이 문자인 경우, 문자열의 길이 반환 (*활용할 컬럼명을 SELECT 구문에서 미리 지정해야 함.)
  • LEFT/RIGHT(컬럼명, 추출할 문자 수) : 컬럼의 값이 문자인 경우, 왼쪽/오른쪽에서 부터 문자열 지정 수만큼 추출
  • CHARINDEX('특정 문자', 컬럼명) : 해당 컬럼에서 특정 문자 시작 위치 추출
  • SUBSTRING(컬럼명, 시작 위치, 끝 위치) : 컬럼의 값이 문자인 경우, 시작 ~ 끝 위치에 존재하는 문자열 추출
  • REPLACE(컬럼명, 대체할 문자, 대체될 문자) : 컬럼의 문자 대체

*AS로 해당 결과 컬럼명을 지정해야 함. 그렇지 않으면, '(열 이름 없음)'으로 반환됨.


WHERE

특정 조건을 만족하는 행을 추출 (행 수준에서 필터링 하는 역할)

FROM 아래에 사용하며 숫자/날짜/문자 모두 기준으로 사용 가능하다. 단, 문자, 날짜는 '' 따옴표 활용해야 함.

 

  • BETWEEN 값 and 값 : 해당 범위 내에 포함되는 값 추출
  • IS NULL/IS NOT NULL : 누락 값 반환/반환하지 않음
  • AND/OR : OR이 AND보다 먼저 실행이 되므로 주의 ! 괄호를 활용하여 알맞은 조건을 지정해야 함.
  • IN (값) : 해당 값에 포함되는 값들 찾기
  • LIKE '값%'/'%값'/'%값%' : 값으로 시작하는/끝나는/포함되는 값들 찾기

GROUP BY

그룹으로 분할하는 함수, 그룹 별로 집계하는데 용이하다.

 

HAVING

GROUP BY 이후의 필터링 또는 집계함수를 하는데 사용된다. WHERE과 다르므로 주의 !

*WHERE는 행을 필터링, HAVING은 그룹 별 집계된 값들을 필터링


ORDER BY

최종 추출된 값들을 정렬하는데 사용되는 함수, 다수의 컬럼을 동시에 사용 가능하며, 먼저 오는 컬럼 기준으로

결과 값이 정렬된다.

  • DESC : 내림 차순 정렬

*기본 값이 오름 차순 정렬이므로, 내림 차순 하고 싶을 경우에 DESC 함수 사용해주면 된다.