개키우는개발자 : )

PostgreSQL 실습문제1 본문

PostgreSQL/데이터 조회와 필터링

PostgreSQL 실습문제1

DOGvelopers 2019. 10. 29. 20:49
반응형

문제

- PAYMENT 테이블에서 단일 거래의 AMOUNT의 액수가 가장 많은 고객들의 CUSTOMER_ID를 추출해라.

단 CUSTOMER_ID의 값은 유일해야 한다.

 

 

1. 가장큰 금액을 먼저 찾는다.

 

테이블의 데이터를 DESC 내림차순으로 정렬한 후 1개의 데이터만 출력하면 나중에 11.99 보다 큰 금액의 데이터가 들어오더라도 가장 큰금액을 항상 반환한다.

select amount from payment order by amount desc limit 1;

결과1

2. 서브쿼리를 이용하여 WHERE 조건 필터링 하기

 

payment테이블의 amount 값이 가장많은 ( 11.99 (최대금액을 계속 반환하는) )값 을 조회한다.

select* from payment
where amount = ( select amount from payment order by amount desc limit 1 );

-- 또는
where amount IN( select amount from payment order by amount desc limit 1 );

결과2

3.단 유일한 CUSTOMER_ID 의 값을 추출 하라

 

CUSTOMER_ID 의 중복이 있을경우를 생각하여 중복제거 함수를 사용

select distinct customer_id from payment
where amount IN( select amount from payment order by amount desc limit 1 );

결과3

TIP . 가독성 높이기

 

같은 테이블을 조회할 때 각 테이블의 구분을 지어주기 위해 alias 를 지어줄 수 있다. 테이블 뒤에 AS 원하는 별칭

또는 AS 를 생략할 수 있다.

select distinct a.customer_id from payment as a
where a.amount IN( select b.amount from payment as b order by b.amount desc limit 1 );
반응형
Comments