일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- SQL문과생
- SQL D자격증
- 조인
- ROLLUP함수
- SQL D 자격증
- SQL 분석함수
- outer join
- 마케터SQL
- SQL자격증
- sql독학
- SQL독학으로 자격증
- inner join
- SQL D 독학
- MySQL
- 마케터코딩
- SQL
- 문과코딩
- SQL D
- 마케팅코딩
- 문과 코딩독학
- group by
- SQL COUNT함수
- DBeaver
- SQL혼자서
- sql함수
- join
- DEBEAVER
- 코딩독학
- 문과SQL
- PostgreSQL
- Today
- Total
문과생의 우당탕탕 공부 기록
DVDRENTAL) payment와 amount 활용 실습문제 본문
Q1. PAYMENT 테이블에서 단일 거래의 AMOUNT의 액수가 가장 많은 고객들의 CUSTOMER_ID를 추출하라. 단, CUSTOMER_ID의 값은 유일해야한다.
하나씩 해보자고!
1. 일단 amount가 가장 큰게 얼마인지 알아보기 위해 표를 만들어보자
amount가 제일 큰게 11.99이다.
상위 1개만 보기 위해서 limit 연산자를 걸어준다.
2. 고객 customer_id를 찾아보자, 유일해야하니까 distinct 함수를 써서
3. 1번이랑 2번 합쳐야하는데 두개니까 하나는 메인쿼리로, 하나는 서브쿼리로-> 중복되는 amount를 기준으로 where 조건을 걸어서 연결해보자
4. 마지막으로 깔끔하게 해주기 위해서 alias 붙여줘서 각 payment 랑 amount를 구분해주자
완성!
근데 처음에는 손도 못대겠더라.. ㅜ ㅜ
하나씩 조건을 분석해서, sql을 짜는게 제일 중요한거 같다.
---PAYMENT 테이블에서 단일 거래의 AMOUNT의 액수가 가장 많은 고객들의 CUSTOMER_ID를 추출하라.
---단, CUSTOMER_ID의 값은 유일해야 한다.
여기에서 첫번째 줄을 보고
1. 최종적으로 select 해야할 것은 customer_id임 (select customer_id)
2. 무슨 액수가 가장 많은 건지 알아야함 (order by ~ desc)
3. paymet 테이블에서 뽑아내야하니까 (from payment)
4. amount를 연결지어야하니까, 조건문 where에 amount 조건을 걸어야함(where amount = (~서브쿼리))
두 번째 줄을 보고
1. custome_id의 유일값이니까 중복되면 안됨 (distinct customer_id)
최종적으로
1. payment와 amount가 두번이상 나오기 때문에 각각 alias 지정해주기 안헷갈리기 위해서
따라서 짜는 SQL은 다음과 같다.
select
distinct a.customer_id
from payment a
where a.amount =
(
select
b.amount
from payment b
order by b.amount desc
limit 1
) ;
끝
내일은 두번째 실습으로 돌아올게요
'SQL 공부 > 데이터 조회와 필터링' 카테고리의 다른 글
SELECT문의 논리적 순서, SQL D 자격증 기출 (0) | 2023.01.15 |
---|---|
DVDRENTAL) EMAIL과 CUSTOMER사용, LIKE 함수로 조건문 작성하기 (1) | 2023.01.06 |