2021. 03. 03 수요일
HackerRank SQL 코딩테스트
- 제목이 파란색으로 강조된 문제는 풀면서 개인적으로 흥미롭거나 재밌었다고 느낀 문제이다.
Revising the Select Query I
- 인구가 100000 보다 많은 미국 도시의 모든 데이터 조회하기
SELECT
*
FROM
CITY
WHERE
population > 100000
AND countrycode = 'USA'
;
Revising the Select Query II
- 인구가 120000 보다 많은 미국의 도시 이름 조회하기
SELECT
NAME
FROM
CITY
WHERE
population > 120000
AND countrycode = 'USA'
;
Select All
SELECT
*
FROM
CITY
;
Select By ID
- ID가 1661인 도시의 모든 데이터 조회하기
SELECT
*
FROM
CITY
WHERE
ID = 1661
;
Japanese Cities' Attributes
SELECT
*
FROM
CITY
WHERE
countrycode = 'JPN'
;
Japanese Cities' Names
SELECT
NAME
FROM
CITY
WHERE
countrycode = 'JPN'
;
Weather Observation Station 1
SELECT
CITY,
STATE
FROM
STATION
;
Weather Observation Station 3
SELECT
DISTINCT CITY
FROM
STATION
WHERE
REGEXP_LIKE (ID, '[02468]$')
;
Weather Observation Station 4
- 테이블에 존재하는 모든 도시 수와 고유 도시 수의 차이 구하기
SELECT
COUNT(*) - COUNT(DISTINCT CITY)
FROM
STATION
;
Weather Observation Station 5
- 가장 긴 이름, 가장 짧은 이름을 가진 도시의 이름과 글자수 구하기
(글자수가 동일할 경우 가장 빠른 알파벳의 도시 구하기)
(하나의 쿼리로 작성할 필요 없음)
SELECT
DISTINCT city,
CHAR_LENGTH(CITY) AS len
FROM
STATION
GROUP BY
city
ORDER BY
len,
city
LIMIT
1
;
SELECT
DISTINCT city,
CHAR_LENGTH(CITY) AS len
FROM
STATION
GROUP BY
city
ORDER BY
len DESC,
city
LIMIT
1
;
Weather Observation Station 6
- 모음(a, e, i, o, u)으로 시작하는 도시 이름 구하기(중복 제외)
SELECT
DISTINCT CITY
FROM
STATION
WHERE
REGEXP_LIKE (CITY, '^[aeiou]')
;
Weather Observation Station 7
- 모음(a, e, i, o, u)으로 끝나는 도시 이름 구하기(중복 제외)
SELECT
DISTINCT CITY
FROM
STATION
WHERE
REGEXP_LIKE (CITY, '[aeiou]$')
;
Weather Observation Station 8
- 모음(a, e, i, o, u)으로 시작하고 끝나는 도시 이름 구하기(중복 제외)
SELECT
DISTINCT CITY
FROM
STATION
WHERE
REGEXP_LIKE (CITY, '^[aeiou]')
AND
REGEXP_LIKE (CITY, '[aeiou]$')
;
Weather Observation Station 9
- 모음(a, e, i, o, u)으로 시작하지 않는 도시 이름 구하기(중복 제외)
SELECT
DISTINCT CITY
FROM
STATION
WHERE
NOT REGEXP_LIKE (CITY, '^[aeiou]')
;
Weather Observation Station 10
- 모음으로 끝나지 않는 도시 이름 구하기(중복 제외)
SELECT
DISTINCT CITY
FROM
STATION
WHERE
NOT REGEXP_LIKE (CITY, '[aeiou]$')
;
Weather Observation Station 11
- 모음으로 시작하지 않거나 끝나지 않는 도시 이름 구하기(중복 제외)
SELECT
DISTINCT CITY
FROM
STATION
WHERE
NOT (REGEXP_LIKE (CITY, '^[aeiou]')
AND
REGEXP_LIKE (CITY, '[aeiou]$'))
;
Weather Observation Station 12
- 모음으로 시작하고 끝나지 않는 도시 이름 구하기(중복 제외)
SELECT
DISTINCT CITY
FROM
STATION
WHERE
NOT (REGEXP_LIKE (CITY, '^a|^e|^i|^o|^u')
or
REGEXP_LIKE (CITY, 'a$|e$|i$|o$|u$'))
;
Higher Than 75 Marks
- 점수가 75점보다 높은 학생들을 이름의 마지막 3글자 오름차순으로 정렬하기
(마지막 3글자가 겹칠 경우 ID 오름차순으로 정렬)
SELECT
NAME
FROM
STUDENTS
WHERE
MARKS > 75
ORDER BY
RIGHT(NAME, 3),
ID
;