1. orders 테이블에서 주문 수량(amount)이 2개 이상인 주문을 진행한 소비자의 ID(customer_id)만 선택하는 쿼리를 작성해주세요!
[내가 쓴 답]
SELECT customer_id
FROM orders
WHERE amount >= 2
[챗GPT의 답안]
SELECT DISTINCT customer_id
FROM orders
WHERE amount >= 2
결과는 같았지만, GPT가 DISTINCT를 사용한 이유가 궁금해서 물어보았다.
SELECT 다음에 **DISTINCT**를 사용하는 이유는,
특정 열에서 중복된 값을 제거하고 유일한 값들만 가져오기 위해서입니다. 이 방법은 중복을 없애야 하는 경우에 매우 유용하며,
특히 같은 고객이 여러 번 주문을 했을 때 고객 ID가 중복되는 것을 방지하는 데 사용됩니다.
DISTINCT를 사용하는 몇 가지 경우와 떠올리는 방법은 다음과 같습니다:
1. 중복을 없애고 고유한 값만 가져와야 하는 경우
- 예를 들어, 특정 고객이 여러 번 주문했을 때, 고객 ID만 고유하게 가져오려면 DISTINCT가 필요합니다.
- 즉, **“특정 조건에 맞는 유일한 값을 가져와야 한다”**는 요구사항이 있을 때, DISTINCT가 떠오릅니다.
2. 데이터베이스 쿼리의 목적을 생각할 때
- ID만 가져오는 쿼리라면, 대개 중복을 제거한 고유한 목록이 필요할 때가 많습니다.
이럴 때, DISTINCT를 사용하면 유용합니다.
- 예를 들어, “특정 조건을 만족하는 고객 ID만 가져온다”라는 요구사항이 있을 때,
고객이 여러 주문을 하더라도 고객 ID가 중복되지 않도록 해야 한다는 점에서 DISTINCT가 필요할 수 있습니다.
3. 데이터 중복이 예상되는 상황을 떠올리기
- 같은 고객이 여러 번 주문하거나, 동일한 값이 여러 번 입력된 경우 중복을 제거해야 하므로,
DISTINCT를 활용하는 경우가 많습니다.
- 데이터를 조회할 때 **"고유한 값"**만 필요하다면, DISTINCT를 떠올리기 좋습니다.
2. orders 테이블에서 2023년 11월 2일 이후에 주문된 주문 수량(amount)이 2개 이상인 주문을 선택하는 쿼리를 작성해주세요!
[내가 쓴 답]
SELECT DISTINCT id
FROM orders
WHERE order_date >=2023-11-02 AND amount >=2
결과는 틀렸다. id 1,4가 결과로 나왔는데 둘은 해당하지 않았다..ㅋㅋ
GPT가 알려준 오류
아래와 같은 몇 가지 오류가 있습니다:
1. 날짜 형식: 2023-11-02는 문자열 형식이어야 하므로 따옴표(' ')로 감싸야 합니다.
2. 비교 연산자: 날짜 비교에서 >= 연산자는 괜찮지만, 날짜 값이 문자열로 처리되어야 합니다.
[챗GPT의 답안]
SELECT *
FROM orders
WHERE order_date > '2023-11-02'
AND amount >= 2
설명
- order_date > '2023-11-02': order_date가 2023년 11월 2일 이후인 주문만 선택합니다.
- amount >= 2: 주문 수량이 2개 이상인 주문만 필터링합니다.SELECT *: orders 테이블의 모든 열을 선택합니다.
필요에 따라 특정 열만 선택할 수도 있습니다.
날짜를 작은 따옴표로 감싸니까 간단히 해결...
3. orders 테이블에서 주문 수량이 3개 미만이면서 배송비(shipping_fee)가 15000원보다 비싼 주문을 선택하는 쿼리를 작성해주세요!
[내가 쓴 답]
SELECT *
FROM orders
WHERE amount <3 AND shipping_fee >15000
헐, GPT의 답과 같다! 나..발전하고 있는 걸까?
설명
- amount < 3: 주문 수량이 3개 미만인 주문만 선택합니다.
- shipping_fee > 15000: 배송비가 15000원보다 비싼 주문만 선택합니다.
- SELECT *: orders 테이블의 모든 열을 선택합니다. 필요에 따라 특정 열만 선택할 수 있습니다.
4. orders 테이블에서 배송비가 높은 금액 순으로 정렬하는 쿼리를 작성해주세요!
[내가 쓴 답]
SELECT *
FROM orders
order by shipping_fee DESC
헐, 헐,,,, 또 GPT의 답과 같다! ㅎㅎㅎㅎ
뿌듯하게 마무리!
'퀘스트' 카테고리의 다른 글
2) 이제 좀 벌었으니 flex 한 번 해볼까요?! (0) | 2024.11.11 |
---|---|
1) 돈을 벌기 위해 일을 합시다! (0) | 2024.11.10 |