데이터분석? 처음부터 한 걸음씩 - SQL #5 문법정리

테리·2021년 9월 3일
0

SQL

목록 보기
5/6
post-thumbnail

SQL 문법정리

show 와 select

show tables : 테이블 보기
select * from orders : orders 테이블의 데이터 전부 가져오기
select 필드명, 필드명 form orders : orders 테이블의 특정 필드만 가져오기

Where절

Where절은 Select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것.

Where와 같이쓰는 주요 문법

1) 같지 않음 : !=

2) 범위 : between

ex) where 필드명 between '2020-07-13' and '2020-07-15'

3) 포함 : in ('a','b')

a이거나 b인 것들 ↔ a도 아니고 b도 아닌것들 not in

ex) where 필드명 in (1,3)

4) 패턴 : like

ex) where 필드명 like '%daum.net'

이외의 유용한 문법들

1) limit

: 보여지는 정보가 너무 많을 때 주로 사용하며 정보의 개수를 제한함. ex) limit 5

2) distinct : 중복제거하고 보기

ex) select distinct(필드명) from 테이블명

3) count : 몇개인지 숫자 세보기

ex) select count(*) from orders 

4) distinct와 count 같이쓰기

ex) select count(distinct(name)) from users

Group by

동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것

최솟값 구하기

select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명

최대값 구하기

select 범주가 담긴 필드명, max(최대값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명

평균 구하기

select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;

합계

select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명

반올림

반올림을 하고 싶을 때 round를 사용
ex) 소수점 2자리까지만 표현하고 반올림하고 싶으면 round(avg(likes),2)

select week, round(avg(likes),2) from checkins
group by week;

cf) 정수형으로 표현된 칼럼을 실수형으로 변경하는 방법

cast(칼럼 as float)

order by(기본적으로 오름차순)

정렬을 할 때 사용. 내림차순으로 할 때 order by 필드명 desc

별칭 기능 : Alias

테이블명 옆에 별칭 또는 필드명 옆에 'as 별칭' 사용

Left join

왼쪽에 있는 테이블을 기준으로 다른 테이블을 붙이는 것

left join 테이블명 on 일치하는 필드명

ex) select * from users u
    left join point_users pu on u.user_id = pu.user_id

inner join

교집합과 같은의미(비어있는 필드가 없이 두 테이블에서 모두 가지고 있는 데이터만 출력)

inner join 테이블명 on 일치하는 필드명

Union : 위 아래로 결과물 합치기

ex)
(
새로 만든 테이블
)
union all
(
새로 만든 테이블
)

Subquery

쿼리문 안에 들어가는 쿼리문

1) Where에 들어가는 Subquery

where 필드명 in (subquery)

2) Select에 들어가는 Subquery

select 필드명, 필드명, (subquery) from ..

3) From에 들어가는 Subquery(가장 많이 사용되는 유형!)

From은 내가 만든 Select와 이미 있는 테이블을 Join하고 싶을 때 사용하면 딱이다!(내가 만든 테이블을 원래 있는 테이블처럼 사용하는 것)

with절

with절을 통해 from절에 들어간 Subquery를 더 깔끌하게 정리할 수 있다!

ex) with table1 as (서브쿼리), table2 as (서브쿼리), ...

이렇게 상단에 서브쿼리를 table1, 2, ... 로 만들고 실제 쿼리문을 작성할 때 서브쿼리를 직접 쓰는 대신 table1, 2, ... 을 사용함

문자열 쪼개기(SUBSTRING_INDEX)

SUBSTRING_INDEX(필드명, '기준', 1 or- 1)

ex) select user_id, email, SUBSTRING_INDEX(email, '@', 1) from users

문자열 일부만 출력하기(SUBSTRING)

SUBSTRING(문자열(필드명), 출력을 하고싶은 첫 글자의 위치, 몇개의 글자를 출력하고 싶은지)

ex) select order_no, created_at, substring(created_at,1,10) as date from orders

Case 문법

case when 조건 
     else 조건 
     END
profile
영화 좋아합니다

0개의 댓글