테이블 구조 요약
- MEMBER 테이블: 회원 정보 저장
- MID: 회원 아이디 (기본키)
- MPW: 비밀번호
- NAME: 회원 이름
- PRODUCT 테이블: 상품 정보 저장
- PID: 상품 번호 (기본키)
- NAME: 상품명
- PRICE: 가격
- CNT: 재고
- ORDERLIST 테이블: 주문 내역 저장
- OID: 주문 번호 (기본키)
- MID: 구매자 (회원 테이블 참조)
- PID: 주문 상품 번호 (상품 테이블 참조)
- CNT: 구매 개수
- PAYMENT: 결제 정보
[10] 상품 테이블의 데이터를 아래와 같이 출력해주세요.
기존 답)
SELECT P.PID, P.NAME, O.CNT as 판매량, (P.PRICE * O.CNT) as 판매금액 FROM ORDERLIST O
INNER JOIN PRODUCT P
ON P.PID = O.PID
정답)
CREATE TABLE MEMBER (
MID VARCHAR(15) NOT NULL,
MPW VARCHAR(15) NOT NULL,
NAME VARCHAR(15) NOT NULL,
PRIMARY KEY (MID)
);
CREATE TABLE PRODUCT (
PID VARCHAR(30) NOT NULL,
NAME VARCHAR(30) NOT NULL,
PRICE DECIMAL(10,2) NOT NULL, -- 숫자 타입으로 변경
CNT INT NOT NULL, -- 숫자 타입으로 변경
PRIMARY KEY (PID)
);
CREATE TABLE ORDERLIST (
OID VARCHAR(30) NOT NULL,
MID VARCHAR(15) NOT NULL,
PID VARCHAR(30) NOT NULL,
CNT INT NOT NULL, -- 숫자 타입으로 변경
PAYMENT VARCHAR(30) NOT NULL,
PRIMARY KEY (OID),
FOREIGN KEY (MID) REFERENCES MEMBER(MID),
FOREIGN KEY (PID) REFERENCES PRODUCT(PID)
);
이와 같이 변경하고 산술 연산 진행. VARCHAR 형식은 곱연산에 있어 문제가 생길 수 있음
SELECT P.PID, P.NAME, O.CNT as 판매량, (P.PRICE * O.CNT) as 판매금액
FROM ORDERLIST O
INNER JOIN PRODUCT P
ON P.PID = O.PID;
[11] [10]번에서 출력한 데이터들을 판매량 순서대로 정렬하여 출력해주세요.
기존 답)
SELECT P.PID, P.NAME, O.CNT as 판매량, (P.PRICE * O.CNT) as 판매금액
FROM ORDERLIST O
INNER JOIN PRODUCT P
ON P.PID = O.PID
ORDER BY CAST(판매량 AS SIGNED) DESC;
정답)
SELECT P.PID, P.NAME, O.CNT as 판매량, (P.PRICE * O.CNT) as 판매금액
FROM ORDERLIST O
INNER JOIN PRODUCT P
ON P.PID = O.PID
ORDER BY 판매량 DESC;
INT로 테이블을 ALTER 하고 정답을 내는게 더 쿼리문에 올바르다.
'Database' 카테고리의 다른 글
| [Do it SQL] Chapter 01-3 / 02-1 (1) | 2025.03.16 |
|---|---|
| [DB] 기초공부 3 (0) | 2025.02.14 |
| [DB] 기초공부 2 (0) | 2025.02.13 |
| [DB] 기초공부 1 (1) | 2025.02.12 |
| [DB] 기초공부 (1) | 2025.02.11 |