๐Ÿš— 157339. ์ž๋™์ฐจ ๋Œ€์—ฌ ๊ธฐ๋ก์—์„œ ์žฅ๊ธฐ/๋‹จ๊ธฐ ๋Œ€์—ฌ ๊ตฌ๋ถ„ํ•˜๊ธฐ (SQL)

1. ๋ฌธ์ œ ์š”์•ฝ


2. ์‹คํŒจํ•œ ์‹œ๋„๋“ค

โŒ ์ฒซ ๋ฒˆ์งธ ์‹œ๋„

SELECT j.car_id, j.car_type, j.daily_fee * ((100 - j.discount_rate)*0.01) * 30 AS fee
FROM (car_rental_company_car c INNER JOIN car_rental_company_discount_plan d ON c.car_type = d.car_type) AS j
     INNER JOIN car_rental_company_rental_history h ON j.car_id = h.car_id
WHERE car_type = '์„ธ๋‹จ' OR 'SUV' AND h.end_date < '2024-11-01'
ORDER BY fee DESC, j.car_type, j.car_id DESC

โŒ ๋‘ ๋ฒˆ์งธ ์‹œ๋„

FROM (SELECT * FROM ... ) AS j ...

โŒ ์„ธ ๋ฒˆ์งธ ์‹œ๋„

FROM (SELECT c.car_id, c.car_type, c.daily_fee, d.discount_rate FROM ... ) AS j ...

โŒ ๋„ค ๋ฒˆ์งธ ์‹œ๋„

... GROUP BY car_id ...

โŒ ๋‹ค์„ฏ ๋ฒˆ์งธ ์‹œ๋„

WHERE car_type IN ('์„ธ๋‹จ', 'SUV') AND h.end_date < '2024-11-01'

โŒ ์—ฌ์„ฏ ๋ฒˆ์งธ ์‹œ๋„

... AND d.duration_type = '30์ผ ์ด์ƒ'
... AND h.start_date <= '2022-11-01' AND h.end_date >= '2022-11-30'

โŒ ์ผ๊ณฑ ๋ฒˆ์งธ ์‹œ๋„

WHERE car_type IN (...) AND (SELECT car_id FROM ...)

โŒ ์—ฌ๋Ÿ ๋ฒˆ์งธ ์‹œ๋„

WHERE car_type IN (...) AND NOT EXISTS (SELECT ...)

โœ… ์•„ํ™‰ ๋ฒˆ์งธ ์‹œ๋„ (์„ฑ๊ณต)

SELECT j.car_id, j.car_type, ROUND(j.daily_fee * ((100 - j.discount_rate)*0.01) * 30) AS fee
FROM (
    SELECT c.car_id, c.car_type, c.daily_fee, d.discount_rate
    FROM car_rental_company_car c
    INNER JOIN car_rental_company_discount_plan d
    ON c.car_type = d.car_type AND d.duration_type = '30์ผ ์ด์ƒ') AS j
WHERE car_type IN ('์„ธ๋‹จ', 'SUV')
AND NOT EXISTS (
    SELECT 1
    FROM car_rental_company_rental_history h2
    WHERE h2.car_id = j.car_id
    AND NOT (h2.end_date < '2022-11-01' OR h2.start_date > '2022-11-30')
)
ORDER BY fee DESC, j.car_type, j.car_id DESC;

3. ๊ตํ›ˆ ๋ฐ ํฌ์ธํŠธ ์ •๋ฆฌ

3.1 SQL WHERE ์ ˆ์—์„œ ๋…ผ๋ฆฌ ์˜ค๋ฅ˜ ์ฃผ์˜

3.2 ๋‚ ์งœ ๋ฒ”์œ„ ํ•„ํ„ฐ๋ง ์‹œ NOT EXISTS ์‚ฌ์šฉ ํŒ

3.3 GROUP BY๋Š” ์ค‘๋ณต ๋ฐฉ์ง€์šฉ ์•„๋‹˜

3.4 ROUND ํ•จ์ˆ˜๋กœ ์‹ค์ˆ˜ ์ฒ˜๋ฆฌ


๐Ÿ“Œ TMI:



Revision #1
Created 26 May 2025 15:06:13 by Dain
Updated 28 May 2025 08:28:55 by Dain