반응형
--1. 가장 제고가 많은 남은 제품의 제품명, 제품종류, 남은갯수 출력 (남은갯수 미출력함...)
SELECT P.P_NAME, C.NAME, A.P_LEFT
FROM PRODUCT P
LEFT JOIN T_CODE C ON C.CODE = P.KIND AND C.KIND = 'CLOTH'
INNER JOIN (
SELECT P_ID, P_LEFT
FROM (
SELECT P_ID, SUM(COUNT) AS P_LEFT
FROM P_MANAGE
GROUP BY P_ID
ORDER BY P_LEFT DESC
)
WHERE ROWNUM = 1
) A ON A.P_ID = P.P_ID;
--2. 유재석이 구매한 '모자' 제품의 각 사이즈별 수량 구하기 (해결)
SELECT P_SIZE,SUM(COUNT)
FROM (
SELECT *
FROM P_MANAGE
WHERE P_ID IN (
SELECT P.P_ID
FROM ORDER_TABLE O
INNER JOIN T_USER U ON O.ID = U.ID
INNER JOIN PRODUCT P ON P.P_ID = O.P_ID
LEFT JOIN T_CODE C ON C.CODE = P.KIND AND C.KIND = 'CLOTH'
WHERE U.NAME IN '유재석' AND C.NAME = '모자'
)
)
GROUP BY P_SIZE;
--3. 한번도 주문이 되지 않은 제품의 S 사이즈 제품들 삭제
--(P_ID가 PRODUCT 테이블에는 있지만 ORDER_TABLE에는 없는 데이터)
DELETE FROM P_MANAGE
WHERE P_ID IN (
SELECT P.P_ID
FROM PRODUCT P
LEFT JOIN ORDER_TABLE O ON O.P_ID = P.P_ID
WHERE O.ORDER_NUM IS NULL
) AND P_SIZE = 'S';
SELECT * FROM T_USER;
SELECT * FROM PRODUCT;
SELECT * FROM P_MANAGE;
SELECT * FROM REVIEW;
SELECT * FROM ORDER_TABLE;
SELECT * FROM T_CODE;
--4. 배송상태가 '환불'인 제품들의 재고량 구하기
SELECT DISTINCT M.P_ID, M.P_SIZE, M.COLOR, M.COUNT
FROM P_MANAGE M
INNER JOIN (
SELECT O.P_ID, O.P_SIZE, O.COLOR
FROM ORDER_TABLE O
LEFT JOIN T_CODE C ON O.STATUS = C.CODE AND C.KIND = 'STATUS'
WHERE C.NAME = '환불'
) A ON A.P_ID = M.P_ID AND A.P_SIZE = M.P_SIZE AND A.COLOR = M.COLOR;
반응형
'Database' 카테고리의 다른 글
[오라클DB] CASE & DECODE (1) | 2023.03.27 |
---|---|
[오라클DB] SQL 쿼리 연습문제 (0) | 2023.03.27 |
[MySQL] 로그인하기 - DB & 자바 연결 (0) | 2023.03.23 |
[오라클DB] 문자 함수 (0) | 2023.03.23 |
[오라클DB] 연습문제3 (0) | 2023.03.22 |