본 캠프 7일차
[TODAY'S SQL 코드카타]
1) 첫 번째 문제는 '모든 레코드 조회하기'
Q. 동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.
👉조회 시 보여야 하는 데이터 : 모든 데이터
✔️테이블명 : ANIMAL_INS
✔️조건 : ANIMAL_ID로 정렬(ORDER BY ASC)
SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
2) 두번째 문제는 '재구매가 일어난 상품과 회원 리스트 구하기'
Q. ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.
👉조회 시 보여야 하는 데이터 : 회원 ID, 상품 ID
✔️조건 : 동일한 회원이 동일한 상품으로 재구매 (group by)
✔️조건2: 회원 ID 기준 오름차순 (ORDER BY ASC)
✔️조건3: 상품 ID 기준 내림차춘 (ORDER BY DESC)
🤔 동일한 회원이 동일상품을 재구매했는지 알려면
같은 회원이 같은 상품을 여러 번 구매한 경우를 찾아야 함.
따라서 회원(user_id)와 상품(product_id) 각각으로 그룹화해야 함
=> 각 회원-상품 조합에 대해 별도 구매 횟수 계산 가능!
💥재구매한 회원 ID만 그룹화하면 되지 않을까? NO!
group by user_ID만 하면 회원 기준으로만 그룹화됨.
그럼 한 회원이 여러 상품 구매한 경우, 상품별 구매내역이 모두 하나의 그룹으로 합쳐져
특정 회원이 구매한 횐수가 합산되어 재구매 조건을 잘못 판별할 수도 있음
작성한 쿼리문은
SELECT user_id, product_id
from ONLINE_SALE
GROUP BY 1, 2
HAVING COUNT(sales_amount) >=2
ORDER BY 1, 2 DESC;
세 번째 문제는 '가장 비싼 상품 구하기'
Q.PRODUCT 테이블에서 판매 중인 상품 중 가장 높은 판매가를 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 MAX_PRICE로 지정해주세요.
👉조회 시 보여야 하는 데이터 : 판매가(price)
✔️조건 : 가장 높은 판매가 출력 (컬럼명은 MAX_PRICE)
나의 최종 쿼리문은
SELECT MAX(price) MAX_PRICE
FROM PRODUCT
네 번째 문제는 '가격이 제일 비싼 식품의 정보 출력하기'
Q. FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요.
👉조회 시 보여야 하는 데이터 : 식품 ID, 식품 이름, 식품 코드, 식품 분류, 식품 가격
✔️조건 : 가격이 제일 비싼
최종 쿼리문은
SELECT
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1;