🤔 문제
다음은 어느 자동차 대여 회사에서 대여중인 자동자들의 정보를 담은 `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';
결과
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif)
✅ 정리
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/
숫자와 문자열을 다루는 함수들
어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주 묻는 질문들의 답변들, 예제 코드들을 얄코에서 확인하세요!
www.yalco.kr
[MySQL 자료형 참고]
https://dev.mysql.com/doc/refman/8.0/en/data-types.html
MySQL :: MySQL 8.0 Reference Manual :: 13 Data Types
MySQL supports SQL data types in several categories: numeric types, date and time types, string (character and byte) types, spatial types, and the JSON data type. This chapter provides an overview and more detailed description of the properties of the type
dev.mysql.com
🧘🏻♀️ 느낀 점
확실히 데브코스랑 프로젝트를 하면서 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 |