강의/엑셀보다 쉬운, 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