🤔 문제
다음은 어느 자동차 대여 회사에서 대여중인 자동자들의 정보를 담은 `CAR_RENTAL_COMPANY_CAR` 테이블입니다.
`CAR_RENTAL_COMPANY` 테이블은 아래와 같은 구조로 되어있으며,
`CAR_ID`, `CAR_TYPE`, `DAILY_FEE`, `OPTIONS`는 각각 자동차ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.
자동차 종류는 '세단', 'SUV', '승합차', '트럭', '리무진'이 있습니다.
자동차 옵션 리스트는 콤마(`,`)로 구분된 키워드 리스트(예: '열선시트', '스마트키', '주차감지센서')로 되어있으며,
키워드 종류는 '주차감지센서', '스마트키', '네비게이션', '통풍시트', '열선시트', '후방카메라', '가죽시트'가 있습니다.
`CAR_RENTAL_COMPANY_CAR` 테이블에서 자동차 종류가 'SUV'인 자동차들의 평균 일일 대여 요금을 출력하는 SQL문을 작성해주세요. 이때 평균 일일 대여 요금은 소수 첫번째 자리에서 반올림하고, 컬럼명은 `AVERAGE_FEE`로 지정해주세요.
예시
예를 들어 `CAR_RENTAL_COMPANY_CAR` 테이블이 다음과 같다면
'SUV'에 해당하는 자동차들의 평균 일일 대여 요금은 18,000원 이므로, 다음과 같은 결과가 나와야 합니다.
💻 나의 풀이
SELECT ROUND(AVG(DAILY_FEE), 0)AS AVERAGE_FEE
FROM CAR_RENTAL_COMPANY_CAR
WHERE CAR_TYPE = 'SUV';
결과
✅ 정리
1. 숫자 함수
함수 | 의미 |
`ROUND(숫자, 반올림할자릿수)` | (`반올림할자릿수`+1)의 자리에서 반올림 |
`CEIL(숫자)` | 올림 처리 |
`FLOOR(숫자)` | 내림 처리 |
`ABS(숫자)` | 괄호 안의 숫자에 절댓값 취한 값 반환 |
`GREATEST(숫자1, 숫자2, ...)` | 괄호 안의 숫자들 중 가장 큰 값을 반환 |
`LEAST(숫자1, 숫자2, ...)` | 괄호 안의 숫자들 중 가장 작은 값을 반환 |
`POW(A, B)`, `POWER(A, B)` | A를 B만큼 제곱한 값을 반환 |
`SQRT(숫자)` | 괄호 안의 숫자의 제곱근을 반환 |
`TRUNCATE(N, n)` | N을 소숫점 n자리까지 선택 |
2. 집계 함수
함수 | 의미 |
`MAX(컬럼명)` | 해당 컬럼에서 가장 큰 값을 반환 |
`MIN(컬럼명)` | 해당 컬럼에서 가장 작은 값을 반환 |
`COUNT(컬럼명)` | 해당 컬럼에 있는 값의 갯수를 반환. (NULL값 제외) |
`SUM(컬럼명)` | 해당 컬럼에 있는 값의 총합을 반환 |
`AVG(컬럼명)` | 해당 컬럼에 있는 값의 평균을 반환 |
3. 문자열 함수
함수 | 의미 |
`UCASE(문자열)` `UPPER(문자열)` |
해당 문자(열)을 모두 대문자로 변환 |
`LCASE(문자열)` `LOWER(문자열)` |
해당 문자(열)을 모두 소문자로 변환 |
`CONCAT(val1, val2, ...)` | 괄호 안의 내용을 공백 없이 이어붙임 |
`CONCAT_S(S, val1, val2, ...)` | 괄호 안의 내용을 S로 이어붙임 |
`SUBSTR(문자열, n, m)` `SUBSTRING(val, n, m)` |
해당 문자열을 n부터 m까지 슬라이싱 |
`LEFT(문자열, n)` | 해당 문자열을 왼쪽부터 n개의 문자만큼 슬라이싱 |
`RIGHT(문자열, n)` | 해당 문자열을 오른쪽부터 n개의 문자만큼 슬라이싱 |
`LENGTH(문자열)` | 해당 문자열의 바이트 길이를 반환 |
`CHAR_LENGTH(문자열)` `CHARACTER_LENGTH(문자열)` |
해당 문자열의 문자 길이를 반환 |
`TRIM(문자열)` | 해당 문자열의 양쪽 공백을 제거 |
`LTRIM(문자열)` | 해당 문자열의 왼쪽 공백을 제거 |
`RTRIM(문자열)` | 해당 문자열의 오른쪽 공백을 제거 |
`LPAD(문자열, n, p)` | 해당 문자열이 n개의 글자가 될 때 까지 p로 이어붙임 |
`RPAD(문자열, n, p)` | 해당 문자열이 n개의 글자가 될 때 까지 p로 이어붙임 |
`REPLACE(문자열, a, b)` | 해당 문자열 중 a를 b로 변경 |
`INSTR(문자열1, 문자열2)` | 문자열1 중에서 문자열2가 있는 첫 위치를 반환 (없으면 0 리턴) |
`CAST(a AS t)` | a를 자료형 t로 변환 |
`CONVERT(a, t)` | a를 자료형 t로 변환 |
🔗 References
[얄코의 SQL - 숫자/문자 관련 함수들 참고]
https://www.yalco.kr/@sql/1-3/
[MySQL 자료형 참고]
https://dev.mysql.com/doc/refman/8.0/en/data-types.html
🧘🏻♀️ 느낀 점
확실히 데브코스랑 프로젝트를 하면서 SQL 고득점 Kit를 풀어보니까,
예전에 풀었을 때는 함수를 몰라서 한참 헤매던 문제도 금방 생각나서 정답을 제출하게 되는 것 같다.
요즘 강의 개수가 (강의 당 시간은 짧긴 한데..;) 너무 많기도 하고 처음 배우는 거라 어렵다..
게다가 지금 상반기 채용시즌이 한창이라 할 일이 미친듯이 많다..
너무 하기 싫은데 오늘 내가 이걸 안하면 내일의 내가 그만큼 해야하고 그 다음 일에도 지장이 생긴다.
곧죽어도 해내야 한다..
특히 강의 듣고 TIL 정리하는 것은 배움의 과정이라 당연히 거쳐야 하는것이지만서도,
눈에 보이는 결과가 안나와서 더 하기싫고 하면서도 성취감이 안나는 것 같다.
그럴 때 코딩테스트 문제 풀고 정답으로 출력되면 그것만큼 뿌듯한 일이 또 없다.
요즘 내 소소한 낙이다. :)
'취업준비 > 코딩테스트 문제 풀이' 카테고리의 다른 글
[프로그래머스 SQL 고득점 Kit] SELECT - 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2024.03.28 |
---|---|
[프로그래머스 SQL 고득점 Kit] SELECT - 12세 이하인 여자 환자 목록 출력하기 (1) | 2024.03.28 |
[프로그래머스 SQL 고득점 Kit] SELECT - 흉부외과 또는 일반외과 의사 목록 출력하기 (1) | 2024.03.26 |
[프로그래머스 SQL 고득점 Kit] SELECT - 3월에 태어난 여성 회원 목록 출력하기 (1) | 2024.03.26 |
[Baekjoon] 백준 10816. 숫자 카드 2 (1) | 2023.12.24 |