SQL#8の使用:受注履歴の実践(グループ)
-- 주문내역
SELECT * FROM ORDER1;
SELECT * FROM ITEM1;
SELECT * FROM MEMBER1;
SELECT ORDITEM FROM(
SELECT
ITEMORDER1.*, MEMBER1.USERNAME, MEMBER1.USERADDR
FROM MEMBER1, (
SELECT
ITEM1.ITEMNAME, ITEM1.ITEMPRICE, ORDER1.*
FROM
ITEM1, ORDER1
WHERE
ITEM1.ITEMNO=ORDER1.ORDITEM) ITEMORDER1
WHERE MEMBER1.USERID=ITEMORDER1.ORDID) ORDER1VIEW
GROUP BY (ORDITEM);
-- 물품별 주문수량 합계
-- 1. JOIN 전체
SELECT * FROM ORDER1, ITEM1;
-- 2. 일치하는 코드만
SELECT * FROM ORDER1, ITEM1
WHERE order1.orditem = item1.itemno;
-- 3. JOIN 필요한 항목만 (ORDNO, ORDCNT, ITEMNO, ITEMNAME, ITEMPRICE)
SELECT
order1.ordno, order1.ordcnt, item1.itemno, item1.itemname, item1.itemprice
FROM
ORDER1, ITEM1
WHERE order1.orditem = item1.itemno;
-- 3. 그룹, 물품별 주문수량 합계
SELECT ITEMNAME 물품명, SUM(ORDCNT) 주문수량합계 FROM
(SELECT
order1.ordno, order1.ordcnt, item1.itemno, item1.itemname, item1.itemprice
FROM ORDER1, ITEM1
WHERE order1.orditem = item1.itemno) ORDITEM
GROUP BY (ITEMNAME);
COMMIT;
-- 물품별 재고수량 합계
SELECT * FROM ORDER1 O, ITEM1 I WHERE O.ORDITEM=I.ITEMNO;
SELECT I.ITEMNO 물품코드, SUM(I.ITEMQTY) 재고수량합계 FROM ORDER1 O, ITEM1 I WHERE O.ORDITEM=I.ITEMNO GROUP BY(I.ITEMNO);
SELECT ITEM1.ITEMNO 물품번호, ITEM1.ITEMNAME 물품명, T1.재고수량합계 FROM ITEM1, (
SELECT I.ITEMNO, SUM(I.ITEMQTY) 재고수량합계 FROM ORDER1 O, ITEM1 I WHERE O.ORDITEM=I.ITEMNO GROUP BY(I.ITEMNO)) T1
WHERE ITEM1.ITEMNO = T1.ITEMNO ;
-- 1. 재고수량만
SELECT ITEMQTY FROM ITEM1;
-- 2. 재고수량 합계
SELECT ITEMNAME 물품명, SUM(ITEMQTY) 재고합계 FROM ITEM1 GROUP BY(ITEMNAME);
-- 재고수량 100개 미만인 물품개수
-- 1. 재고수량 개수
SELECT ITEMNAME, ITEMQTY FROM ITEM1;
-- 2. 재고수량이 100개 미만인 물품 -----------------X
SELECT * FROM ITEM1 WHERE ITEMQTY <100;
SELECT ITEMNAME, ITEMQTY FROM ITEM1
WHERE ITEMQTY < 100;
-- 3. 물품별 재고수량 개수
SELECT COUNT(*)
FROM
ITEM1
WHERE ITEMQTY < 100
GROUP BY (ITEMQTY);
-- 시간대별 주문수량 합계
SELECT * FROM ORDER1;
SELECT
TO_CHAR(ORDDATE, 'YYYY-MM-DD HH24') 시간,
COUNT(*) 개수
FROM
ORDER1
GROUP BY (TO_CHAR(ORDDATE, 'YYYY-MM-DD HH24'));
-- 고객별 주문수량, 주문금액 합계
-- 1. 주문내역
SELECT * FROM ORDER1;
-- 2. 주문한 고객내역
SELECT ORDID
FROM ORDER1
GROUP BY (ORDID);
-- 3. 고객별 주문수량, 주문금액 합계
SELECT ORDID, SUM(ORDCNT) 주문합계
FROM ORDER1
GROUP BY (ORDID);
-- 4. ORDER1 X ITEM1
SELECT * FROM
(SELECT
ITEM1.ITEMNAME, ITEM1.ITEMPRICE, ORDER1.*
FROM
ITEM1, ORDER1
WHERE
ITEM1.ITEMNO=ORDER1.ORDITEM) ORDITEM;
-- 5. ORDITEM에서 필요한거 꺼내기 (고객, 주문수량, 주문금액)
SELECT ORDITEM.ORDID, ORDITEM.ORDCNT, ORDITEM.ITEMPRICE FROM
(SELECT
ITEM1.ITEMNAME, ITEM1.ITEMPRICE, ORDER1.*
FROM
ITEM1, ORDER1
WHERE
ITEM1.ITEMNO=ORDER1.ORDITEM) ORDITEM;
-- 6. 그룹화
SELECT
ORDITEM.ORDID,
SUM(ORDITEM.ORDCNT) 주문수량합계,
SUM(ORDITEM.ITEMPRICE*ORDITEM.ORDCNT) 주문금액
FROM
(SELECT
ITEM1.ITEMNAME, ITEM1.ITEMPRICE, ORDER1.*
FROM
ITEM1, ORDER1
WHERE
ITEM1.ITEMNO=ORDER1.ORDITEM) ORDITEM
GROUP BY(ORDITEM.ORDID);
-- 주문수량이 30개인 주문내역의 개수
-- 0. ORDITEM
SELECT
ITEM1.ITEMNAME, ITEM1.ITEMPRICE, ORDER1.*
FROM
ITEM1, ORDER1
WHERE
ITEM1.ITEMNO=ORDER1.ORDITEM;
-- 1. 주문내역
SELECT * FROM ORDER1;
-- 2. 주문수량 30개 미만 주문내역
SELECT * FROM ORDER1
WHERE ORDCNT < 30;
-- 3. 개수 (그룹)
SELECT ITEMNAME
FROM
(SELECT
ITEM1.ITEMNAME, ITEM1.ITEMPRICE, ORDER1.*
FROM
ITEM1, ORDER1
WHERE
ITEM1.ITEMNO=ORDER1.ORDITEM) ORDITEM
WHERE ORDCNT < 30
GROUP BY (ITEMNAME);
-- 지역별 주문수량 합계
-- 0. ORDITEM
SELECT
ITEM1.ITEMNAME, ITEM1.ITEMPRICE, ORDER1.*
FROM
ITEM1, ORDER1
WHERE
ITEM1.ITEMNO=ORDER1.ORDITEM;
-- 1. ORDITEM X MEMBER1
SELECT *
FROM
(SELECT
ITEM1.ITEMNAME, ITEM1.ITEMPRICE, ORDER1.*
FROM
ITEM1, ORDER1
WHERE
ITEM1.ITEMNO=ORDER1.ORDITEM) ORDITEM,
MEMBER1
WHERE ORDITEM.ORDID = MEMBER1.USERID;
-- 2. 필요한것만 꺼내기 그룹화
SELECT
MEMBER1.USERADDR 지역,
SUM(ORDER1.ORDCNT) 주문수량합계
FROM
ORDER1,
MEMBER1
WHERE ORDER1.ORDID=MEMBER1.USERID
GROUP BY(MEMBER1.USERADDR);
선생님꺼
SELECT * FROM ORDER1;
SELECT * FROM ITEM1;
SELECT * FROM MEMBER1;
SELECT ORDITEM FROM(
SELECT
ITEMORDER1.*, MEMBER1.USERNAME, MEMBER1.USERADDR
FROM MEMBER1, (
SELECT
ITEM1.ITEMNAME, ITEM1.ITEMPRICE, ORDER1.*
FROM
ITEM1, ORDER1
WHERE
ITEM1.ITEMNO=ORDER1.ORDITEM) ITEMORDER1
WHERE MEMBER1.USERID=ITEMORDER1.ORDID) ORDER1VIEW
GROUP BY (ORDITEM);
-- 물품별 주문수량 합계
SELECT * FROM ORDER1 O, ITEM1 I WHERE O.ORDITEM=I.ITEMNO;
SELECT O.ORDITEM 물품코드, SUM(O.ORDCNT) 주문수량합계
FROM ORDER1 O, ITEM1 I WHERE O.ORDITEM=I.ITEMNO
GROUP BY (O.ORDITEM);
-- 물품별 재고수량 합계
SELECT * FROM ORDER1 O, ITEM1 I WHERE O.ORDITEM=I.ITEMNO;
SELECT I.ITEMNO 물품코드, SUM(I.ITEMQTY) 재고수량합계
FROM ORDER1 O, ITEM1 I
WHERE O.ORDITEM=I.ITEMNO GROUP BY(I.ITEMNO);
-- 재고수량 100개 미만인 물품개수
SELECT COUNT(*) FROM ITEM1 WHERE ITEMQTY < 100;
-- 시간대별 주문수량 합계
SELECT TO_CHAR(ORDDATE, 'YYYY-MM-DD HH24' ) 시간, SUM(ORDCNT) 주문수량
FROM ORDER1
GROUP BY( TO_CHAR(ORDDATE, 'YYYY-MM-DD HH24' )) ;
-- 고객별 주문수량, 주문금액 합계
SELECT * FROM ORDER1 O, ITEM1 I WHERE O.ORDITEM=I.ITEMNO;
SELECT O.ORDID, COUNT(*), SUM(ITEMPRICE*ORDCNT)
FROM ORDER1 O, ITEM1 I WHERE O.ORDITEM=I.ITEMNO
GROUP BY(O.ORDID);
SELECT * FROM MEMBER1 M1, (
SELECT O.ORDID, COUNT(*), SUM(ITEMPRICE*ORDCNT)
FROM ORDER1 O, ITEM1 I WHERE O.ORDITEM=I.ITEMNO
GROUP BY(O.ORDID)) T1
WHERE M1.USERID = T1.ORDID;
-- 주문수량이 30개인 주문내역의 개수
SELECT * FROM ORDER1 O, ITEM1 I WHERE O.ORDITEM=I.ITEMNO AND O.ORDCNT<30;
SELECT COUNT(*) FROM ORDER1 O, ITEM1 I WHERE O.ORDITEM=I.ITEMNO AND O.ORDCNT<30;
-- 지역별 주문수량 합계
SELECT * FROM ORDER1 O, MEMBER1 M WHERE O.ORDID=M.USERID;
SELECT M.USERADDR 지역, SUM(O.ORDCNT) 주문수량합계
FROM ORDER1 O, MEMBER1 M WHERE O.ORDID=M.USERID
GROUP BY(M.USERADDR);
Reference
この問題について(SQL#8の使用:受注履歴の実践(グループ)), 我々は、より多くの情報をここで見つけました https://velog.io/@aro9515/SQL활용-8-주문내역-실습그룹テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol