📝20230120 이범재 강사님 SQL 수업내용 필기
📝20230125 이범재 강사님 SQL 수업내용 필기
📝20230126 이범재 강사님 SQL 수업내용 필기
📝20230127 이범재 강사님 SQL 수업내용 필기
GROUP BY
는 반드시 집계함수와 함께 다닌다.WHERE
이랑 비슷하지만 다른 함수WHERE
은 원초적인 데이터에 필터를 걸어주지만HAVING
은 완성된 데이터에 다시 필터를 걸어주는 함수SELECT
로 만들어낸 컬럼값에 대해 필터를 걸어줄 수 있음보기 순서를 원하는 컬럼에 따라 순서대로 배열해줌
ORDER BY 컬럼명 ASC
ORDER BY 컬럼명
ORDER BY 컬럼명 DESC
여러 개의 테이블을 세로로 합치는 것!!
JOIN은 가로로 합침
두 개의 테이블을 합침!
ALL
: 모두 보여줌distinct
: 중복 제거INTERSECT DISTINCT
이렇게 만 있음A에 교집합을 빼는 거라 생각하면 됨!
서브쿼리는 다른 SQL문 안에 중첩된 SELECT 문
국가가 ‘Brasil’인 유저의 주문정보(orders)를 조회 하는 쿼리입니다
select *
from `thelook_ecommerce.orders` o
where user_id in (
select id
from `thelook_ecommerce.users`
where country = 'Brasil'
);
주문수가 3건 이상인 유저의 id와 이름을 조회합니다.
select user_id,
from `thelook_ecommerce.orders`
group by user_id
having count(order_id)>=3
select id, first_name, last_name
from `thelook_ecommerce.users`
where id in(
select user_id
from `thelook_ecommerce.orders`
group by user_id
having count(order_id)>=3
)
유저의 id와 이름 그리고 주문수를 조회
users테이블의 정보와 user별 주문수를 조회하는 서브쿼리를 left join을 이용하여 연결해서 유저의 주문수를 조회
select u.id, o.order_count
from `thelook_ecommerce.users` u
join (
select user_id, count(order_id) as order_count
from `thelook_ecommerce.orders`
group by user_id
)o on u.id = o.user_id
user 정보를 조회합니다. 해당 유저의 주문수(order_count)를 조회하기 위해 select 절에서 서브쿼리를 사용하였습니다.
select id,
first_name,
last_name,
(select count(order_id) from `thelook_ecommerce.orders` where user_id = u.id )as order_count
from `thelook_ecommerce.users` u
order by order_count desc
with 절은 쿼리 내에서 임시 결과를 정의하고 사용합니다.
주요 사용 목적은 복잡한 추출 과정을 분할하여 단계적으로 처리하면서 전체 데이터 추출과정을 단순화시키는 것 입니다.
WITH CTE명
AS ( 쿼리 표현식
)
WITH user_data AS (select id from `thelook_ecommerce.users`)
select * from user_data
1) user_data CTE(유사 테이블)을 정의합니다. 내용은 users의 id값을 조회하는 서브쿼리입니다.
2) user_data 로 부터 데이터를 조회 합니다.
with 좋은점
<리포트> 에서
로우데이터 → 정제 → 연, 월, 일 단위 집계 → 요약 데이터
빠르고 깔끔하게 요약할 수 있음
설날이 끝난 후 수업이 있는 주 였다. 꽤나 정신없는 한 주를 보낼뻔 했지만 SQL 수업이라 다행이였다.
이번에 나온 개념에서 생소했던 점은 집합내용들과 서브쿼리였다.
이건 다시 한번 복습을 통해서 반복해야할 것 같다.