728x90

 

SELECT distinct T1.CAR_ID
FROM CAR_RENTAL_COMPANY_CAR T1
JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY T2 ON T1.CAR_ID = T2.CAR_ID
where T1.CAR_TYPE = '세단' and TO_CHAR(T2.START_DATE, 'MM') = '10'
ORDER BY T1.CAR_ID DESC;

728x90

설정

트랙백

댓글

728x90

 

SELECT  *
  FROM  (
            SELECT  A.CAR_ID
                 ,  A.CAR_TYPE
                 ,  30 * A.DAILY_FEE * (1 - (B.DISCOUNT_RATE * 0.01)) AS FEE
              FROM  CAR_RENTAL_COMPANY_CAR              A
                 ,  CAR_RENTAL_COMPANY_DISCOUNT_PLAN    B
             WHERE  A.CAR_TYPE      = B.CAR_TYPE
               AND  B.DURATION_TYPE = '30일 이상'
               AND  A.CAR_TYPE IN ('세단', 'SUV')
               AND  A.CAR_ID NOT IN (SELECT  A.CAR_ID
                                                        FROM  CAR_RENTAL_COMPANY_CAR              A
                                                        , CAR_RENTAL_COMPANY_RENTAL_HISTORY   B
                                                       WHERE  A.CAR_ID = B.CAR_ID
                                                       AND  A.CAR_TYPE IN ('세단', 'SUV')
                                                       AND  TO_CHAR(B.END_DATE, 'YYYYMMDD') >= '20221101'
                                                       AND  TO_CHAR(B.START_DATE, 'YYYYMMDD') < '20221201')) A
 WHERE  A.FEE BETWEEN 500000 AND 1999999
 ORDER  BY  FEE DESC, CAR_TYPE, CAR_ID DESC

728x90

설정

트랙백

댓글

728x90

 

SELECT a.HISTORY_ID, 
case when a.END_DATE-a.START_DATE+1 >= 7 then b.DAILY_FEE*((100-c.DISCOUNT_RATE)/100)*(a.END_DATE-a.START_DATE+1)
else b.DAILY_FEE*(a.END_DATE-a.START_DATE+1) end "fee"
from  CAR_RENTAL_COMPANY_RENTAL_HISTORY a,
CAR_RENTAL_COMPANY_CAR b,
CAR_RENTAL_COMPANY_DISCOUNT_PLAN c
where a.CAR_ID = b.CAR_ID
and b.CAR_TYPE = c.CAR_TYPE
and c.DURATION_TYPE LIKE 
    case when (a.END_DATE-a.START_DATE+1) BETWEEN 7 and 29 then '7일%'
         when (a.END_DATE-a.START_DATE+1) BETWEEN 30 and 89 then '30일%'
         when (a.END_DATE-a.START_DATE+1) >= 90 then '90일%'
         else '7일%' end
and b.CAR_TYPE = '트럭'
order by 2 desc, 1 desc

728x90

설정

트랙백

댓글

728x90

 

SELECT EXTRACT(MONTH FROM START_DATE) MONTH, CAR_ID, COUNT(*) RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (SELECT CAR_ID
                 FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
                 WHERE EXTRACT(MONTH FROM START_DATE) IN (8, 9, 10) 
                 GROUP BY CAR_ID
                 HAVING COUNT(*) > 4) AND 8 <= EXTRACT(MONTH FROM START_DATE) AND EXTRACT(MONTH FROM START_DATE) < 11
GROUP BY EXTRACT(MONTH FROM START_DATE), CAR_ID
HAVING COUNT(*) <> 0
ORDER BY MONTH, CAR_ID DESC;

728x90

설정

트랙백

댓글

728x90

 

select a.author_id, b.author_name, a.category, sum(a.price * c.sales)
from book a, author b, book_sales c
where 1=1
and to_char(c.sales_date, 'YYYYMM') = '202201'
and a.author_id = b.author_id
and a.book_id = c.book_id
group by a.author_id, b.author_name, a.category
order by 1, 3 desc

728x90

설정

트랙백

댓글

728x90

 

SELECT CATEGORY, SUM(SALES) TOTAL_SALES
FROM BOOK B, BOOK_SALES S
WHERE B.BOOK_ID = S.BOOK_ID
AND TO_CHAR(SALES_DATE, 'YYYY-MM') = '2022-01'
GROUP BY CATEGORY
ORDER BY 1;

728x90

설정

트랙백

댓글

728x90

 

SELECT TO_CHAR(SALES_DATE,'YYYY-MM-DD'), PRODUCT_ID , USER_ID, SALES_AMOUNT
FROM ONLINE_SALE 
WHERE TO_CHAR(SALES_DATE,'MM') = '03'
UNION ALL -- UNION은 SELECT 와 SELECT 사이에 적어준다.
SELECT TO_CHAR(SALES_DATE,'YYYY-MM-DD'), PRODUCT_ID ,NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE 
WHERE TO_CHAR(SALES_DATE,'MM') = '03'
ORDER BY 1,2,3
-- 컬럼 순으로 1,2,3이 자동으로 부여되는데 이걸 정렬에 사용하면 코드가 깨끗해진다.

 

728x90

설정

트랙백

댓글

728x90

 

SELECT
    T1.PRODUCT_CODE, SUM(T2.SALES_AMOUNT*T1.PRICE) AS SALES
FROM PRODUCT T1, OFFLINE_SALE T2 
Where T1.PRODUCT_ID = T2.PRODUCT_ID
GROUP BY T1.PRODUCT_CODE
ORDER BY 
    SALES DESC, 
    T1.PRODUCT_CODE ASC;

728x90

설정

트랙백

댓글