728x90
반응형

오라클 설치할 수 없을 때 유용하게 사용할 수 있는 'Oracle Apex'

클라우드 환경에서 사용할 수 있는 오라클이라고 생각하면 된다.

 

그래서 설치가 필요가 없다. 그냥 웹사이트 가입만 하면 끝~ 아래 상세 내용을 작성했으니 참고!


'Oracle Apex' 링크  : https://apex.oracle.com/en/learn/getting-started/

 

Getting Started

It takes just a few moments to get started with Oracle APEX. Follow these simple steps and get your free workspace to begin developing apps within minutes.

apex.oracle.com

 

 

'Oracle Apex' 가입 방법

 

Free Sign Up 클릭 !

 

Workspace name은 고유한 본인만의 값을 작성해야 한다! 다른 사람들과 겹치면 안됨

 

정상적으로 입력되면 메일이 한통 온다.

 

Create Workspace 클릭하면 거의 다 끝!

 

마지막으로 저 버튼만 클릭하면 클라우드 환경이 열린다.

 

짜잔! 오라클 설치 없이 맥북유저들도 쉽게 Oracle 실습해보삼

728x90
반응형
728x90
반응형

문제


https://school.programmers.co.kr/learn/courses/30/lessons/157339

 

정답


-- 코드를 입력하세요
SELECT AA.CAR_ID, BB.CAR_TYPE, BB.FEE FROM
(
    SELECT 
        B.CAR_ID CAR_ID, 
        MAX(START_DATE) START_DATE2,
        MAX(END_DATE) END_DATE2
    FROM 
        CAR_RENTAL_COMPANY_CAR A, 
        CAR_RENTAL_COMPANY_RENTAL_HISTORY B
    WHERE 1=1
        AND A.CAR_ID = B.CAR_ID
    GROUP BY B.CAR_ID
) AA
,(
    SELECT 
        A.CAR_ID AS CAR_ID
        ,A.CAR_TYPE AS CAR_TYPE
        ,(A.DAILY_FEE * (1-B.DISCOUNT_RATE*0.01) * 30) AS FEE
    FROM CAR_RENTAL_COMPANY_CAR A, CAR_RENTAL_COMPANY_DISCOUNT_PLAN B
    WHERE 1=1
        AND A.CAR_TYPE = B.CAR_TYPE
        AND A.CAR_TYPE IN ('세단', 'SUV')
        AND B.DURATION_TYPE = '30일 이상'
) BB
WHERE 1=1
    AND AA.CAR_ID = BB.CAR_ID
    AND ( AA.START_DATE2 > TO_DATE('20221130', 'YYYYMMDD') 
         OR AA.END_DATE2 < TO_DATE('20221101', 'YYYYMMDD') )
    AND BB.FEE >= 500000 AND BB.FEE < 2000000
ORDER BY FEE DESC, CAR_TYPE, CAR_ID DESC
;

 

결과


 

CAR_ID CAR_TYPE FEE
3 세단 1518000
23 세단 1380000

 

풀이


아래 두 테이블을 JOIN하면 되는 문제이다.

 

1.  2022년 11월 1일부터 2022년 11월 30일까지 대여 가능한 차동차 구하기

SELECT * FROM
(
    SELECT 
        B.CAR_ID CAR_ID, 
        MAX(START_DATE) START_DATE2,
        MAX(END_DATE) END_DATE2
    FROM 
        CAR_RENTAL_COMPANY_CAR A, 
        CAR_RENTAL_COMPANY_RENTAL_HISTORY B
    WHERE 1=1
        AND A.CAR_ID = B.CAR_ID
        AND A.CAR_TYPE IN ('세단', 'SUV')
    GROUP BY B.CAR_ID
) AA
WHERE 1=1
    AND ( AA.START_DATE2 > TO_DATE('20221130', 'YYYYMMDD') 
         OR AA.END_DATE2 < TO_DATE('20221101', 'YYYYMMDD') )
;

 

2. 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차 구하기

SELECT * FROM
(
    SELECT 
        A.CAR_ID AS CAR_ID
        ,A.CAR_TYPE AS CAR_TYPE
        ,(A.DAILY_FEE * (1-B.DISCOUNT_RATE*0.01) * 30) AS FEE
    FROM CAR_RENTAL_COMPANY_CAR A, CAR_RENTAL_COMPANY_DISCOUNT_PLAN B
    WHERE 1=1
        AND A.CAR_TYPE = B.CAR_TYPE
        AND A.CAR_TYPE IN ('세단', 'SUV')
        AND B.DURATION_TYPE = '30일 이상'
) BB
WHERE 1=1
    AND BB.FEE >= 500000 AND BB.FEE < 2000000
;
728x90
반응형
728x90
반응형

문제


https://school.programmers.co.kr/learn/courses/30/lessons/133027?language=oracle

 

 

정답


-- 아이스크림 가게의 상반기 주문 정보를 담은 FIRST_HALF
-- 7월의 아이스크림 주문 정보를 담은 JULY
-- (7월 아이스크림 총 주문량 + 상반기의 아이스크림 총 주문량) 
-- 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요.
SELECT B.FLAVOR
FROM (
SELECT A.FLAVOR, SUM(A.TOTAL_ORDER) AS TOTAL_ORDER FROM (
SELECT FLAVOR, TOTAL_ORDER FROM FIRST_HALF
    UNION 
SELECT FLAVOR, TOTAL_ORDER FROM JULY  
) A
GROUP BY A.FLAVOR
ORDER BY TOTAL_ORDER DESC) B
WHERE ROWNUM < 4
  • UNION을 하면 중복값 제외, UNION ALL 을 쓰면 중복값 포함이다
  • GROUP BY 된 채로 ORDER BY를 사용할 수 있다!
SELECT A.FLAVOR, SUM(A.TOTAL_ORDER) AS TOTAL_ORDER FROM (
SELECT FLAVOR, TOTAL_ORDER FROM FIRST_HALF
    UNION 
SELECT FLAVOR, TOTAL_ORDER FROM JULY  
) A
GROUP BY A.FLAVOR
ORDER BY TOTAL_ORDER DESC

728x90
반응형
728x90
반응형

문제


https://school.programmers.co.kr/learn/courses/30/lessons/151138


정답


-- 코드를 입력하세요
SELECT 
	history_id as HISTORY_ID
	, car_id as CAR_ID
	, to_char(start_date, 'yyyy-mm-dd') as START_DATE
	, to_char(end_date, 'yyyy-mm-dd') as END_DATE
	, case when (end_date - start_date+1)>=30
		then '장기 대여'
		else '단기 대여'
	  end as RENT_TYPE
from car_rental_company_rental_history
where 
	start_date >= to_date('20220901', 'yyyy-mm-dd') 
	and start_date < to_date('20221001', 'yyyy-mm-dd')
order by history_id desc;

 

728x90
반응형

+ Recent posts