AS
as, alias는 맨 마지막에 할당되기 때문에 alias로 필터링을 할 수 없다.
Where문이나 Having절 같은 곳에서는 사용할 수 없다.
따라서 원래 열 이름이나 원래 함수 중 하나를 선택해야 한다.
select customer_id , sum(amount) as total_spent from payment
group by customer_id having sum(amount) > 100 ;
JOIN
[inner join]
select * from TableA inner join TableB on TableA.col_match = TableB.col_match
e.g.

/^그림 1*/
select payment_id, payment.customer_id,first_name from payment inner join customer on payment.customer_id = customer.customer_id;
[outer join]
/*grammer*/
select * from TableA full outer join TableB on TableA.col_match = TableB.col_match
e.g.
select * from customer full outer join payment on customer.customer_id = payment.customer_id
where customer.customer_id is NULL or payment.payment_id is NULL
[left outerjoin]
왼쪽 테이블을 기준, 오른쪽 테이블에만 있는 경우, 그 결과는 NULL
/*grammer*/
select * from TableA left join TableB on TableA.col_match = TableB.col_match
e.g.,
select film.film_id, film.title, inventory_id,store_id from film left join inventory
on inventory.film_id = film.film_id
where inventory.film_id is null /*차집합 A*/
UNION
2개 이상의 SELECT문의 결과 세트를 결합
e.g.

select column_name from table1 UNION select column_name from table2;
단, 두 문장이 논리적이어야 하며 서로의 바로 위에 결과를 쌓을 수 있도록 열이 일치해야 한다.
[예상문제]
1. "California에 거주하는 사람의 이메일 주세요."

select address.district, customer.email from address inner join customer
on address.address_id = customer.address_id where district = 'California';
2. "Nick Wahlberg가 출현하는 영화 작품들을 주세요."

select first_name, last_name,title from actor inner join film_actor
on actor.actor_id = film_actor.actor_id inner join film on film.film_id = film_actor.film_id
where last_name = 'Wahlberg' and first_name = 'Nick';
'Coding Test' 카테고리의 다른 글
SQL - [CASE, COALESCE, CAST, NULLIF] (0) | 2022.12.13 |
---|---|
SQL - [Table Command] (0) | 2022.12.13 |
SQL - [DB, Table] (0) | 2022.12.13 |
SQL - [고급 SQL] (2) | 2022.12.07 |
SQL - [Practice] (0) | 2022.12.07 |