set lines 1000
col CUSTOMER_NAME for a30
SELECT * FROM CUSTOMER;
SELECT CUSTOMER_ID, TO_CHAR(USAGE_TIME, 'YYYY-MM-DD HH24:MI:SS') AS USAGE_TIME, USAGE_AMOUNT
FROM TIME_USAGE;
SELECT TO_CHAR(START_TIME, 'YYYY-MM-DD HH24:MI:SS') AS START_TIME,
TO_CHAR(END_TIME, 'YYYY-MM-DD HH24:MI:SS') AS END_TIME,
RATE FROM TIME_SLOT;
-- 1번
SELECT A.CUSTOMER_ID, A.CUSTOMER_NAME, SUM(B.USAGE_AMOUNT * C.RATE) AS USAGE_AMOUNT_TOTAL
FROM CUSTOMER A INNER JOIN TIME_USAGE B
ON (A.CUSTOMER_ID = B.CUSTOMER_ID) INNER JOIN TIME_SLOT C
ON (B.USAGE_TIME <= C.START_TIME AND B.USAGE_TIME >= C.END_TIME)
GROUP BY A.CUSTOMER_ID, A.CUSTOMER_NAME
ORDER BY A.CUSTOMER_ID, A.CUSTOMER_NAME;
no rows selected
-- 1번 (부등호 반대)
SELECT A.CUSTOMER_ID, A.CUSTOMER_NAME, SUM(B.USAGE_AMOUNT * C.RATE) AS USAGE_AMOUNT_TOTAL
FROM CUSTOMER A INNER JOIN TIME_USAGE B
ON (A.CUSTOMER_ID = B.CUSTOMER_ID) INNER JOIN TIME_SLOT C
ON (B.USAGE_TIME >= C.START_TIME AND B.USAGE_TIME <= C.END_TIME)
GROUP BY A.CUSTOMER_ID, A.CUSTOMER_NAME
ORDER BY A.CUSTOMER_ID, A.CUSTOMER_NAME;
CUSTOMER_ID CUSTOMER_NAME USAGE_AMOUNT_TOTAL
----------- ------------------------------ ------------------
1 Alice 20
2 Bob 45
3 Charlie 20
-- 2번
SELECT A.CUSTOMER_ID, A.CUSTOMER_NAME, SUM(B.USAGE_AMOUNT * C.RATE) AS USAGE_AMOUNT_TOTAL
FROM CUSTOMER A INNER JOIN TIME_USAGE B INNER JOIN TIME_SLOT C
ON (A.CUSTOMER_ID = B.CUSTOMER_ID AND B.USAGE_TIME
BETWEEN C.START_TIME AND C.END_TIME)
GROUP BY A.CUSTOMER_ID, A.CUSTOMER_NAME
ORDER BY A.CUSTOMER_ID, A.CUSTOMER_NAME;
ERROR at line 5:
ORA-00905: missing keyword
// INNER JOIN 구문이 잘못 사용됨
// 각각의 INNER JOIN 구문은 두 테이블 간의 조인 조건을 명시해야 합니다.
// FROM CUSTOMER A INNER JOIN TIME_USAGE B INNER JOIN TIME_SLOT C
-- 3번
SELECT A.CUSTOMER_ID, A.CUSTOMER_NAME, SUM(B.USAGE_AMOUNT * C.RATE) AS USAGE_AMOUNT_TOTAL
FROM CUSTOMER A INNER JOIN TIME_USAGE B
ON (A.CUSTOMER_ID = B.CUSTOMER_ID) INNER JOIN TIME_SLOT C
ON (B.USAGE_TIME BETWEEN C.START_TIME AND C.END_TIME)
GROUP BY A.CUSTOMER_ID, A.CUSTOMER_NAME
ORDER BY A.CUSTOMER_ID, A.CUSTOMER_NAME;
CUSTOMER_ID CUSTOMER_NAME USAGE_AMOUNT_TOTAL
----------- ------------------------------ ------------------
1 Alice 20
2 Bob 45
3 Charlie 20
-- 4번
SELECT A.CUSTOMER_ID, A.CUSTOMER_NAME, SUM(B.USAGE_AMOUNT * C.RATE) AS USAGE_AMOUNT_TOTAL
FROM CUSTOMER A INNER JOIN TIME_USAGE B
ON (A.CUSTOMER_ID = B.CUSTOMER_ID) BETWEEN JOIN TIME_SLOT C
GROUP BY A.CUSTOMER_ID, A.CUSTOMER_NAME
ORDER BY A.CUSTOMER_ID, A.CUSTOMER_NAME;
ERROR at line 3:
ORA-00933: SQL command not properly ended