아... 문자정렬 숫자정렬을 까먹어서 20분을 헤맸다;;
ORDER BYORDER BY는 SQL 쿼리 결과를 정렬하는 데 사용되는 절. 하나 이상의 열을 기준으로 데이터를 오름차순(기본값) 또는 내림차순으로 정렬 가능
SELECT CAR_ID, TO_CHAR(ROUND(AVG(RENT_DURATION), 1), 'FM999.0') AS AVERAGE_DURATION
FROM (
SELECT HISTORY_ID, CAR_ID, (END_DATE - START_DATE + 1) AS RENT_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
)
GROUP BY CAR_ID
HAVING ROUND(AVG(RENT_DURATION), 1) >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;
TO_CHAR로 변환된 ROUND(AVG(RENT_DURATION), 1) 값이 문자열로 정렬. 문자열 정렬은 숫자와 다르게 각 문자를 기준으로 정렬"7.0", "7.1", "10.0"이 있다면, 문자열 정렬 결과는 "7.0", "7.1", "10.0" 순으로 정렬SELECT CAR_ID, TO_CHAR(ROUND(AVG(RENT_DURATION), 1), 'FM999.0') AS AVERAGE_DURATION
FROM (
SELECT HISTORY_ID, CAR_ID, (END_DATE - START_DATE + 1) AS RENT_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
)
GROUP BY CAR_ID
HAVING ROUND(AVG(RENT_DURATION), 1) >= 7
ORDER BY ROUND(AVG(RENT_DURATION), 1) DESC, CAR_ID DESC;
ROUND(AVG(RENT_DURATION), 1)의 숫자 값을 기준으로 정렬. 숫자 정렬은 실제 크기 순으로 정렬7.0, 7.1, 10.0이 있다면, 숫자 정렬 결과는 10.0, 7.1, 7.0 순으로 정렬TO_CHAR로 변환된 값을 사용하여 정렬하며, 각 문자의 순서를 따름| 연산 | SQL Server | Oracle |
|---|---|---|
| 현재 날짜 | GETDATE() | SYSDATE |
| 날짜 더하기 | DATEADD(DAY, 5, GETDATE()) | SYSDATE + 5 |
| 날짜 빼기 | DATEADD(DAY, -5, GETDATE()) | SYSDATE - 5 |
| 날짜 차이 계산 | DATEDIFF(DAY, '2023-01-01', GETDATE()) | SYSDATE - TO_DATE('2023-01-01', 'YYYY-MM-DD') |
| 포맷팅 | FORMAT(GETDATE(), 'yyyy-MM-dd') | TO_CHAR(SYSDATE, 'YYYY-MM-DD') |
DATEDIFF 외에 빼기 연산 가능.
SELECT CAR_ID, TO_CHAR(ROUND(AVG(RENT_DURATION), 1), 'FM999.0') AS AVERAGE_DURATION
FROM (
SELECT HISTORY_ID, CAR_ID, (END_DATE - START_DATE + 1) AS RENT_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
)
GROUP BY CAR_ID
HAVING ROUND(AVG(RENT_DURATION), 1) >= 7
ORDER BY ROUND(AVG(RENT_DURATION), 1) DESC, CAR_ID DESC;
SELECT CAR_ID, FORMAT(ROUND(AVG(RENT_DURATION), 1), '0.0') AS AVERAGE_DURATION
FROM (
SELECT HISTORY_ID, CAR_ID, (END_DATE - START_DATE + 1) AS RENT_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
)
GROUP BY CAR_ID
HAVING ROUND(AVG(RENT_DURATION), 1) >= 7
ORDER BY ROUND(AVG(RENT_DURATION), 1) DESC, CAR_ID DESC;