◎ Select절 주의사항
◎ 문법 정리
※ where절에 and와 or를 함께 쓸때는, 반드시 ()로 의미 단위끼리 묶는다!!
※ where절은 문자의 경우 대소문자를 구분한다.
※ between 연산자를 사용하는 것보다 비교 연산자를 사용하여 쿼리를 작성하는 것이 성능 측면에서 좋다.
※ 만약 검색하고자 하는 문자에 '%'나 '_'가 있을 경우에는 ESCAPE '\'를 같이 작성해야 한다.
※ ORDER BY 구문은 DBMS에게 큰 부담을 주는 명령어이기 떄문에 SQL에서 피해야 하는 명령어이다.
◎ Group by절 주의사항
※ SELECT 절에 사용된 급룹 함수 이외의 칼럼이나 표현식은 반드시 GROUP BY 절에 사용되어야 한다.
※ GROUP BY 절에 사용된 칼럼은 SELECT 절에 사용되지 않아도 된다.
※ GROUP BY 절에는 반드시 칼럼명이 사용되어야 하며 칼럼 Alias는 사용하면 안된다.
◎ Having절 주의사항
※ ROLLUP 함수 : 주어진 데이터들의 소계를 자동으로 계산해서 출력
※ CUBE 함수 : 소계도 출력하고 전체 총계까지 출력
※ LAG / LEAD 함수
※ SUM ( ) OVER ( ) : 누적 합계 구하는 식
◎ Join 주의사항
※ UNION은 두결과에서 중복된 값을 제거하고 출력, UNION ALL은 중복되는 값까지 전부 다 출력
◎ 데이터 유형
※ INTICAP( ) : 입력 값의 첫 글자만 대문자로 변환
※ INSTR( ) : 특정 글자의 위치를 찾아주는 함수
※ MONTHS_BETWEEN( ) : 두 날짜 사이의 개월 수
※ ADD_MONTHS( ) : 주어진 날짜에 개월을 더함
※ NEXT_DAY( ) : 주어진 날짜를 기준으로 돌아오는 날짜 출력
◎ 데이터 가공하기
-- 숫자를 문자열로 바꾸기
select dt, cast(dt as varchar)
from online_order
-- 문자열 칼럼에서 일부만 잘라내기
select dt, left(cast(dt as varchar),4) as yyyy,
substring(cast(dt as varchar),5,2) as mm,
right(cast(dt as varchar),2) as dd
from online_order
-- yyyy-mm-dd 형식으로 이어주기
--1)
select dt, concat(left(cast(dt as varchar),4), '-',
substring(cast(dt as varchar),5,2), '-',
right(cast(dt as varchar),2) as yyyymmdd
from online_order
--2)
select dt, left(cast(dt as varchar),4) || '-' ||
substring(cast(dt as varchar),5,2) || '-' ||
right(cast(dt as varchar),2) as yyyymmdd
from online_order
-- null 값인 경우 임의값으로 바꿔주기
select oo.userid, coalesce(oo.userid, 0) -- NA가 숫자인 경우
from online_order oo
left join user_info ui on oo.userid = ui.userid
select coalesce(ui.gender, 'NA') -- NA가 문자인 경우
from online_order oo
left join user_info ui on oo.userid = ui.userid
-- 원하는 컬럼 추가해보기
select case when gender = 'M' then '남성'
when gender = 'F' then '여성'
else 'NA' end as gender
from user_info ui
-- 날짜 관련 함수 활용하기
--1) 오늘을 나타내는 기본 구문
select now()
select current_date
--2) 날짜 형식에서 문자 형식으로 변환하기
select to_char(now(),'yyyymmdd')
--3) 날짜 더하기/빼기
select now() + interval '1 month'
select now() + interval '1 week'
select dateadd('month', -2, now())
--4) 날짜로부터 연도, 월, 주 확인하기
select date_part('month', now())
select date_part('day', now())
◎ 서브쿼리
- 하나의 SQL문으로 풀 수 없는, 조금 더 복잡한 데이터를 추출할 때 서브쿼리 사용
◎ 윈도우 함수
- Group By 만으로는 원하는 계산이 안될때 (구매비중 / 성장률 / 랭킹)
'Data scientist > SQL' 카테고리의 다른 글
SQL_함수(2) (0) | 2021.08.09 |
---|---|
SQL_Practice_기온 데이터 분석 (0) | 2021.08.08 |
SQL_함수 (0) | 2021.08.06 |
SQL_TABLE (0) | 2021.08.05 |
SQL_기본 (0) | 2021.08.04 |