일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- @Spring-Test
- 리눅스
- myBatis
- 마이바티스
- SpringJDBC
- java
- STS
- 프로퍼티
- spring aop
- Ubunt
- JDBC TEMPLATE
- java spring
- Di
- AOP
- XML
- Linux
- @AspectJ
- @JUnit
- unix
- 컨테이너
- pointcut
- Framework
- spring
- Spring JDBC
- POJO
- JdbcTemplate
- Spring Boot
- spring framework
- @test
- Dependency Injection
Archives
- Today
- Total
개키우는개발자 : )
PostgreSQL 실습문제1 본문
반응형
문제
- PAYMENT 테이블에서 단일 거래의 AMOUNT의 액수가 가장 많은 고객들의 CUSTOMER_ID를 추출해라.
단 CUSTOMER_ID의 값은 유일해야 한다.
1. 가장큰 금액을 먼저 찾는다.
테이블의 데이터를 DESC 내림차순으로 정렬한 후 1개의 데이터만 출력하면 나중에 11.99 보다 큰 금액의 데이터가 들어오더라도 가장 큰금액을 항상 반환한다.
select amount from payment order by amount desc limit 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 );
3.단 유일한 CUSTOMER_ID 의 값을 추출 하라
CUSTOMER_ID 의 중복이 있을경우를 생각하여 중복제거 함수를 사용
select distinct customer_id from payment
where amount IN( select amount from payment order by amount desc limit 1 );
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 );
반응형
'PostgreSQL > 데이터 조회와 필터링' 카테고리의 다른 글
PostgreSQL 실습문제2 (0) | 2019.10.29 |
---|---|
PostgreSQL 유효하지 않은값 ( NULL 연산자) (0) | 2019.10.28 |
PostgreSQL 패턴 검색 (LIKE 문) (0) | 2019.10.28 |
PostgreSQL 범위 조회 (BETWEEN 연산자) (2) | 2019.10.28 |
PostgreSQL 필터링 조회 (IN 연산자) (0) | 2019.10.28 |
Comments