강의/엑셀보다 쉬운, SQL
[강의] 엑셀보다 쉬운, SQL 4주차
newljk415
2023. 5. 6. 13:52
728x90
728x90
SMALL
쿼리문 정리.
subquery
where 에 들어가는 subquery
select * from users u
where u.user_id in (select o.user_id from orders o
where o.payment_method = 'kakaopay');
1. from 실행: users 데이터를 가져와줌
2. Subquery 실행: 해당되는 user_id의 명단을 뽑아줌
3. where .. in 절에서 subquery의 결과에 해당되는 'user_id의 명단' 조건으로 필터링 해줌
Select 에 들어가는 Subquery
select c.checkin_id, c.user_id, c.likes,
(select avg(likes) from checkins c2
where c2.user_id = c.user_id) as avg_like_user
from checkins c;
1. select * from 문에서 데이터를 한줄한줄 출력하는 과정에서
2. select 안의 subquery가 매 데이터 한줄마다 실행되는데
3. 그 데이터 한 줄의 user_id를 갖는 데이터의 평균 좋아요 값을 subquery에서 계산해서 출력
From 에 들어가는 Subquery
select pu.user_id, a.avg_like, pu.point from point_users pu
inner join (
select user_id, round(avg(likes),1) as avg_like from checkins
group by user_id
) a on pu.user_id = a.user_id
1. 먼저 서브쿼리의 select가 실행되고
2. 이것을 테이블처럼 여기고 밖의 select가 실행
문자열 편집
select user_id, email, SUBSTRING_INDEX(email, '@', 1) from users
@를 기준으로 텍스트를 쪼개고, 그 중 첫 번째 조각을 가져오라는 뜻
select user_id, email, SUBSTRING_INDEX(email, '@', -1) from users
@를 기준으로 텍스트를 쪼개고, 그 중 마지막 조각을 가져오라는 뜻
select order_no, created_at, substring(created_at,1,10) as date from orders
SUBSTRING(문자열, 출력을 하고싶은 첫 글자의 위치, 몇개의 글자를 출력하고 싶은지)
728x90
728x90
LIST