1. 요일별, 주문방법별 주문 건수와 매출 - 코로나로 인한 배달 증가를 분석하기 위한 구문
SELECT SUBSTR(O.order_time, 1, 8) 날짜, O.eat_option 주문방법, COUNT(DISTINCT O.order_no) 주문건수, SUM(OM.amount * M.price) 매출
FROM Orders O, Order_Menu OM, Menu M
WHERE O.order_no = OM.orders
and OM.menu = M.menu_no
GROUP BY SUBSTR(O.order_time, 1, 8), O.eat_option;
💥 결과가 다르게 나옴 - 날짜가 문제인듯
✅ 해결
SELECT SUBSTR(O.order_time, 1, 10) 날짜, O.eat_option 주문방법, COUNT(DISTINCT O.order_no) 주문건수, SUM(OM.amount * M.price) 매출
FROM Orders O, Order_Menu OM, Menu M
WHERE O.order_no = OM.orders
and OM.menu = M.menu_no
GROUP BY SUBSTR(O.order_time, 1, 10), O.eat_option;
2. 고객 유형별(성별, 나이), 메뉴별 주문 건수와 매출
SELECT U.sex 성별, U.age 나이, M.name 메뉴, SUM(OM.amount) 주문건수, SUM(OM.amount * M.price) 매출
FROM Customer U, Orders O, Order_Menu OM, Menu M
WHERE O.order_no = OM.orders
and OM.menu = M.menu_no
and U.phone = O.customer
GROUP BY U.sex, U.age, M.name;
3. 단골 고객 관리 - 자주 방문한 손님 10명의 주문 내역 조회
SELECT O.customer 회원번호, C.name 코너이름, M.name 메뉴이름, O.eat_option 주문방법, O.pay_option 결제방법, O.order_time 주문시간
FROM (
SELECT O.customer RES
FROM Orders O
WHERE ROWNUM <= 10
GROUP BY O.customer
ORDER BY COUNT(O.customer) DESC
) A, Orders O, Corner C, Menu M, Order_Menu OM
WHERE O.customer = A.RES
and O.order_no = OM.orders
and OM.menu = M.menu_no
and M.corner = C.corner_no
GROUP BY O.customer, C.name, M.name, O.eat_option, O.pay_option, O.order_time;
💥 ERROR - ROWNUM 사용 방법이 다른 듯
💥 시행착오
https://baessi.tistory.com/104
https://developer-jjun.tistory.com/23
SET @ROWNUM:=0;
SELECT @ROWNUM:=@ROWNUM+1, O.customer 회원번호, C.name 코너이름, M.name 메뉴이름, O.eat_option 주문방법, O.pay_option 결제방법, O.order_time 주문시간
FROM (
SELECT O.customer RES
FROM Orders O
WHERE @ROWNUM <= 10
GROUP BY O.customer
ORDER BY COUNT(O.customer) DESC
) A, Orders O, Corner C, Menu M, Order_Menu OM
WHERE O.customer = A.RES
and O.order_no = OM.orders
and OM.menu = M.menu_no
and M.corner = C.corner_no
GROUP BY O.customer, C.name, M.name, O.eat_option, O.pay_option, O.order_time;
✅ 해결
https://m.blog.naver.com/jwlee0208/10096564579
SELECT O.customer 회원번호, C.name 코너이름, M.name 메뉴이름, O.eat_option 주문방법, O.pay_option 결제방법, O.order_time 주문시간
FROM (
SELECT O.customer RES
FROM Orders O
GROUP BY O.customer
ORDER BY COUNT(O.customer) DESC
LIMIT 10
) A, Orders O, Corner C, Menu M, Order_Menu OM
WHERE O.customer = A.RES
and O.order_no = OM.orders
and OM.menu = M.menu_no
and M.corner = C.corner_no
GROUP BY O.customer, C.name, M.name, O.eat_option, O.pay_option, O.order_time;
4. 요일별, 코너별 주문 건수와 매출
SELECT SUBSTR(O.order_time, 1, 8) 날짜, C.name 코너이름, COUNT(DISTINCT O.order_no) 주문건수, SUM(OM.amount * M.price) 매출
FROM Orders O, Corner C, Order_Menu OM, Menu M
WHERE O.order_no = OM.orders
and OM.menu = M.menu_no
and M.corner = C.corner_no
GROUP BY SUBSTR(O.order_time, 1, 8), C.name;
💥 결과가 다르게 나옴 - 날짜가 문제인듯
✅ 해결
SELECT SUBSTR(O.order_time, 1, 10) 날짜, C.name 코너이름, COUNT(DISTINCT O.order_no) 주문건수, SUM(OM.amount * M.price) 매출
FROM Orders O, Corner C, Order_Menu OM, Menu M
WHERE O.order_no = OM.orders
and OM.menu = M.menu_no
and M.corner = C.corner_no
GROUP BY SUBSTR(O.order_time, 1, 10), C.name;
5. 코너별, 주문방법별 주문 건수와 매출
SELECT C.name 코너이름, O.eat_option 주문방법, COUNT(DISTINCT O.order_no) 주문건수, SUM(OM.amount * M.price) 매출
FROM Orders O, Corner C, Order_Menu OM, Menu M
WHERE O.order_no = OM.orders
and OM.menu = M.menu_no
and M.corner = C.corner_no
GROUP BY C.name, O.eat_option;
6. 메뉴별 매출
SELECT M.name 메뉴이름, SUM(OM.amount) 주문건수, SUM(OM.amount * M.price) 매출
FROM Orders O, Order_Menu OM, Menu M
WHERE O.order_no = OM.orders
and OM.menu = M.menu_no
GROUP BY M.name;