MySQL 해커랭크 | The Blunder ( TRIM : BOTH, TRAILING, LEADING )
문제
https://www.hackerrank.com/challenges/the-blunder/problem?isFullScreen=true
The Blunder | HackerRank
Query the amount of error in Sam's result, rounded up to the next integer.
www.hackerrank.com
Samantha was tasked with calculating the average monthly salaries for all employees in the EMPLOYEES table,
but did not realize her keyboard's key was broken until after completing the calculation.
She wants your help finding the difference between her miscalculation
(using salaries with any zeros removed), and the actual average salary.
Samantha(의 키보드)가 잘못했네..
- Write a query calculating the amount of error (i.e.: actual - miscalculated average monthly salaries)
- round it up to the next integer
테이블
EMPLOYEES |
![]() |
1 2 | -- EMPLOYEES 테이블 살펴보기 SELECT * FROM EMPLOYEES | cs |
풀이과정
#오답
TRIM, LTRIM, RTRIM 이런 함수를 사용하면 양쪽, 왼쪽, 오른쪽 끝의 0만 제거할 수 있고,
숫자들 사이에 끼어있는 0은 찾아내서 지울 수가 없음
1 2 3 4 | -- 오답 TRIM() SELECT CEIL(AVG(Salary)-AVG(TRIM(TRAILING 0 FROM Salary))) FROM EMPLOYEES WHERE Salary > 1000 AND Salary < POWER(10, 5) | cs |
[TRIM, LTRIM, RTRIM]
- TRIM
- BOTH
- TRIM(BOTH FROM 문자열) : 양쪽 공백 제거
- TRIM(BOTH 제거할 문자 FROM 문자열) : 양쪽 문자 제거
- LEADING
- TRIM(LEADING FROM 문자열) : 왼쪽 공백 제거
- TRIM(LEADING 제거할 문자 FROM 문자열) : 왼쪽 문자 제거
- TRAILING
- TRIM(TRAILING FROM 문자열) : 오른쪽 공백 제거
- TRIM(TRAILING 제거할 문자 FROM 문자열) : 오른쪽 문자 제거
- BOTH
- LTRIM : 왼쪽 공백 제거
- RTRIM : 오른쪽 공백 제거
# 정답
REPLACE 함수를 이용해 모든 0을 제거해줌 (0이 왼쪽에 있든, 오른쪽에 있든, 가운데 끼어있든)
1 2 3 4 | -- 정답 REPLACE() SELECT CEIL(AVG(Salary)-AVG(REPLACE(Salary, 0, ''))) FROM EMPLOYEES WHERE Salary > 1000 AND Salary < POWER(10, 5) | cs |
1 2 3 4 | -- 정답 REGEXP_REPLACE() SELECT CEIL(AVG(Salary)-AVG(REGEXP_REPLACE(Salary, 0, ''))) FROM EMPLOYEES WHERE Salary > 1000 AND Salary < POWER(10, 5) | cs |
REGEXP 함수는 정규식으로 문자열을 필터링하는 함수
REGEXP_REPLACE(대상 문자열, 대상 문자열(정규식), 바꿀 문자열) AS 닉네임
TRIM
https://extbrain.tistory.com/64
[MySQL] 문자열에 공백 또는 문자 제거 (TRIM, LTRIM, RTRIM 함수)
▶MySQL 문자열에 공백 또는 문자 제거 (TRIM, LTRIM, RTRIM 함수) ▶설명 MySQL에서 문자에 공백을 제거할 때 사용하는 함수인 TRIM, LTRIM, RTRIM 함수에 대해 알아보겠습니다. TRIM : 문자열에 공백 또는 문자
extbrain.tistory.com
REGEXP_REPLACE
https://stormpy.tistory.com/91
[MySQL] REGEXP_REPLACE 한글, 영문, 특수문자, 숫자 제거
REGEXP_REPLACE는 MySQL 8.0 이상부터 사용 가능하다. 정규식을 통해 한글, 영문, 특수문자, 숫자를 제거하는 방법은 아래와 같다. SELECT REGEXP_REPLACE(대상 문자열, 대상 문자열, 변경 문자열) AS 닉네임; --
stormpy.tistory.com