SQL활용 #8 - 주문내역 실습(그룹)

김형우·2022년 3월 22일
0

SQL 활용

목록 보기
9/14
-- 주문내역

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);
profile
The best

0개의 댓글