복잡한 서브쿼리를 활용한 데이터 조회 연습문제
이번 연습문제에서는 서브쿼리를 활용하여 복잡한 데이터 조회를 실습해보겠습니다. 서브쿼리는 데이터베이스에서 중첩된 쿼리를 사용하여 좀 더 복잡한 조건으로 데이터를 조회할 수 있는 강력한 기능입니다.
문제
고객 테이블과 주문 테이블이 있는 데이터베이스가 있다고 가정해보겠습니다. 고객 테이블은 다음과 같은 컬럼이 있습니다.
customer_id
: 고객 IDcustomer_name
: 고객 이름
주문 테이블은 다음과 같은 컬럼이 있습니다.
order_id
: 주문 IDcustomer_id
: 고객 ID (고객과 주문은 일대다 관계)order_date
: 주문 날짜
다음과 같은 요구사항에 맞게 복잡한 서브쿼리를 작성해보세요.
- 주문 내역이 있는 모든 고객의 이름을 조회해주세요.
- 총 주문 내역이 5개 이상인 고객의 이름을 조회해주세요.
- 최근 1주일 동안 주문한 고객의 이름을 조회해주세요.
답안
- 주문 내역이 있는 모든 고객의 이름을 조회합니다.
SELECT customer_name
FROM customer
WHERE customer_id IN (SELECT customer_id FROM orders);
- 총 주문 내역이 5개 이상인 고객의 이름을 조회합니다.
SELECT customer_name
FROM customer
WHERE customer_id IN (SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING COUNT(order_id) >= 5);
- 최근 1주일 동안 주문한 고객의 이름을 조회합니다.
SELECT customer_name
FROM customer
WHERE customer_id IN (SELECT customer_id
FROM orders
WHERE order_date >= DATEADD(week, -1, GETDATE()));
위의 SQL 문장들은 각각 주어진 요구사항에 맞게 서브쿼리를 사용하여 데이터를 조회하는 예제입니다.
이렇게 서브쿼리를 활용하면 조금 더 복잡한 조건으로 데이터를 조회할 수 있으며, 데이터베이스를 효율적으로 활용할 수 있습니다.
서브쿼리는 복잡한 데이터 조회에 유용한 도구이니, 꼭 숙지하고 활용해보시기 바랍니다.
#hashtags #서브쿼리