21회차 내배캠 - 4회차 라이브세션

포도당·2025년 5월 21일
0

where 절은 그룹바이 전에 필터링

그러니까

elect count(distinct game_actor_id) as actor_cnt,
game_account_id as accnt
from marketer_sql_users
where level>=30
group by game_account_id
having count(distinct game_actor_id)>=2

이 쿼리문에 경우

30인 이상 애들먼저거르고
그룹바이로 집계함
왜냐면 30이하인애들은 구할 필요 없으니까

/////////////4회차 유니온 과 조인

유니온은 쓸일 많이 없다, 조인은 완벽히 이해해야함
조인은 관계형데이터베이스 > sql을 쓰는 이유 엑셀을 안쓰는이유

innerjoin 이라는 명칭을 붙여주는게 좋다

ERD

엔터티 다이어 그램

조인의 응용

#s1 테이블에서 주문하지않은 사람의 이름을 출력 join 쓰지말고

#1 주문한 모든 사람의 이름 구하기
#2 전체 인원중(s1)에서 그사람 제외하고 구해보기, 이름 수동으로 필터링
#3 자동 필터링으로 변환하기
#1
select DISTINCT name
from marketer_sql_s2;
#2
select distinct name
from marketer_sql_s1
where name not in ('alice', 'angella', 'barbara', 'Emma', 'Issabel' , 'Winifred');
#3
select *
from
(
select distinct name
from marketer_sql_s1
where name not in ('alice', 'angella', 'barbara', 'Emma', 'Issabel' , 'Winifred')
) as a
;

#join을 사용하여 주문이 이루어진 모든 주문의 이름,나이, 상품명 금액 출력
SELECT m1.name,
m1.age,
m2.goods_nm,
m2.goods_pay_date
FROM marketer_sql_s1 m1 INNER JOIN marketer_sql_s2 m2 ON m1.name = m2.name;

profile
어디까지 성장할 것 인가..!

0개의 댓글