Velog에 올릴 수 있도록 각 문제에 대한 간단한 개념 설명 + SQL 코드 + 결과 컬럼 설명을 정리했습니다.
개념 정리: AVG()
함수는 평균을 구할 때 사용합니다. FLOOR()
를 사용하면 소수점을 버리고 정수값으로 표현할 수 있습니다.
SELECT FLOOR(AVG(PRODUCT_STOCK)) AS "평균 재고 수"
FROM TBL_PRODUCT;
결과
개념 정리: COUNT(*)
는 행의 개수를 셉니다. 특정 상품명 조건을 걸어 개수를 조회합니다.
SELECT COUNT(*) AS "맥북 주문 개수"
FROM TBL_ORDER TBO
JOIN TBL_PRODUCT TBP
ON TBO.PRODUCT_ID = TBP.ID
WHERE PRODUCT_NAME = '맥북';
결과
개념 정리: GROUP BY
로 상품별 주문 횟수를 집계하고, ORDER BY
로 정렬한 뒤 FETCH FIRST
로 하나만 가져옵니다.
SELECT *
FROM TBL_PRODUCT
WHERE ID = (
SELECT PRODUCT_ID
FROM TBL_ORDER TBO
JOIN TBL_PRODUCT TBP
ON TBO.PRODUCT_ID = TBP.ID
GROUP BY PRODUCT_ID
ORDER BY COUNT(PRODUCT_ID) DESC
FETCH FIRST 1 ROWS ONLY
);
결과
개념 정리: 서브쿼리로 평균 재고를 구하고, 그 이상인 상품들을 조회합니다.
SELECT ID AS "평균 재고 이상 재고를 가진 상품의 ID",
PRODUCT_PRICE AS "상품 가격",
PRODUCT_NAME AS "상품명",
PRODUCT_STOCK AS "상품재고"
FROM TBL_PRODUCT
WHERE PRODUCT_STOCK >= (
SELECT FLOOR(AVG(PRODUCT_STOCK))
FROM TBL_PRODUCT
);
결과
개념 정리: 특정 상품명을 조건으로 하여 해당 주문의 날짜를 가져옵니다.
SELECT ORDER_DATE AS "공기청정기 주문정보에 대한 주문 날짜"
FROM TBL_ORDER TBO
JOIN TBL_PRODUCT TBP
ON TBO.PRODUCT_ID = TBP.ID
WHERE PRODUCT_NAME = '공기청정기';
결과
개념 정리: ROUND(값, 자릿수)
로 소수점 이하를 반올림할 수 있습니다.
SELECT ROUND(AVG(PRODUCT_PRICE),2) AS "상품 평균 가격"
FROM TBL_PRODUCT;
결과
개념 정리: 오름차순 정렬 후 FETCH FIRST 1 ROWS ONLY
로 첫 번째 데이터를 조회합니다.
SELECT PRODUCT_NAME AS "재고 제일 작은 상품 이름", PRODUCT_STOCK AS "재고"
FROM TBL_PRODUCT
ORDER BY PRODUCT_STOCK ASC
FETCH FIRST 1 ROWS ONLY;
결과
개념 정리: 특정 상품명으로 주문 테이블에서 ID만 가져옵니다.
SELECT TBO.ID AS "TV 주문 정보 ORDER_ID"
FROM TBL_ORDER TBO
JOIN TBL_PRODUCT TBP
ON TBO.PRODUCT_ID = TBP.ID
WHERE PRODUCT_NAME = 'TV';
결과
개념 정리: ORDER BY ... DESC
로 내림차순 정렬 후 가장 비싼 상품을 가져옵니다.
SELECT PRODUCT_NAME AS "상품 이름", PRODUCT_PRICE || '원' AS "상품 가격"
FROM TBL_PRODUCT
ORDER BY PRODUCT_PRICE DESC
FETCH FIRST 1 ROWS ONLY;
결과
개념 정리: COUNT()
를 활용하여 주문 수가 가장 적은 상품을 찾습니다.
SELECT PRODUCT_NAME AS "상품 이름"
FROM (
SELECT PRODUCT_ID
FROM TBL_ORDER TBO
GROUP BY PRODUCT_ID
ORDER BY COUNT(PRODUCT_ID) ASC
FETCH FIRST 1 ROWS ONLY
) TBO
JOIN TBL_PRODUCT TBP
ON TBO.PRODUCT_ID = TBP.ID;
결과