2021. 03. 03 수요일
HackerRank SQL 코딩테스트
- 제목이 파란색으로 강조된 문제는 풀면서 개인적으로 흥미롭거나 재밌었다고 느낀 문제이다.
Employee Names
SELECT
name
FROM
Employee
ORDER BY
name
;
Employee Salaries
- 월급이 $2000 이상이고 근무 개월이 10개월 미만인 직원의 이름을 id 오름차순으로 불러오기
SELECT
name
FROM
Employee
WHERE
salary > 2000
AND months < 10
ORDER BY
employee_id
;
Top Earners
- 가장 많은 총 임금(근무개월*월급)의 액수와 거기에 해당하는 임금을 받은 직원 수를 불러오기
SELECT
salary*months AS earnings,
COUNT(*)
FROM
Employee
GROUP BY
1
ORDER BY
1 DESC
LIMIT
1
;
Weather Observation Station 2
- LAT_N의 총 합계와 LONG_W의 총 합계를 소수점 2자리로 반올림하여 불러오기
SELECT
ROUND(SUM(LAT_N), 2) AS lat,
ROUND(SUM(LONG_W), 2) AS lon
FROM
STATION
;
Weather Observation Station 13
- 38.788 보다 크고 137.2345 보다 작은 LAT_N의 합계를 소수점 4자리로 반올림하여 불러오기
SELECT
ROUND(SUM(LAT_N), 4) AS lat
FROM
STATION
WHERE
LAT_N > 38.788
AND LAT_N < 137.2345
;
Weather Observation Station 14
- 137.2345 보다 작은 LAT_N 중 가장 큰 값 불러오기
SELECT
ROUND(MAX(LAT_N), 4) AS lat
FROM
STATION
WHERE
LAT_N < 137.2345
;
Weather Observation Station 15
SELECT
ROUND(LONG_W, 4) AS lon
FROM
STATION
WHERE
LAT_N < 137.2345
;
Higher Than 75 Marks
- 137.2345 보다 작은 LAT_N 중 가장 큰 LAT_N을 가진 LONG_W 불러오기
SELECT
ROUND(LONG_W, 4) AS lon
FROM
STATION
WHERE
LAT_N < 137.2345
ORDER BY
LAT_N DESC
LIMIT
1
;
Weather Observation Station 16
- 38.778 보다 큰 LAT_N 중 가장 작은 값 불러오기
SELECT
ROUND(MIN(LAT_N), 4) AS lat
FROM
STATION
WHERE
LAT_N > 38.778
;
Weather Observation Station 17
- 38.778 보다 큰 LAT_N 중 가장 작은 LAT_N을 가진 LONG_W를 불러오기
SELECT
ROUND(LONG_W, 4) AS lon
FROM
STATION
WHERE
LAT_N > 38.778
ORDER BY
LAT_N
LIMIT
1
;
Weather Observation Station 18
- a는 북위 최소값 / b는 경도 최소값 / c는 북위 최대값 / d는 경도 최대값이다.
- 이 때, P1(a,b)과 P2(c,d) 사이의 맨해튼 거리를 소수점 4자리에서 반올림하여 구하기
- 맨해튼 거리 구하는 공식 : |a-c|+|b-d|
SELECT
ROUND(
ABS((MIN(LAT_N) - MAX(LAT_N)))
+
ABS((MIN(LONG_W) - MAX(LONG_W))),
4) AS Man_d
FROM
STATION
;