https://www.hackerrank.com/challenges/weather-observation-station-8/problem?isFullScreen=true
Weather Observation Station 8 | HackerRank
Query CITY names that start AND end with vowels.
www.hackerrank.com
Query the list of CITY names from STATION which have vowels (i.e., a, e, i, o, and u) as both their first and last characters. Your result cannot contain duplicates.
먼저, 문제에서는 모음으로 시작하고, 모음으로 끝나는 CITY의 이름을 출력하길 원한다. SQL의 LEFT()함수와 RIGHT()함수를 이용하면 문자열 양 끝단에 조건을 걸 수 있다. CITY의 가장 왼쪽 단어가 모음에 속하는 동시에(AND) 가장 오른쪽 단어가 모음에 속하는 경우를 조건으로 걸어주면 원하는 도시의 목록을 나열할 수 있다. 그리고 결과는 중복값을 원하지 않으므로, DISTINCT를 이용해 처리해준다.
SELECT DISTINCT city
FROM station
WHERE LEFT(city, 1) IN ('a', 'e', 'i', 'o', 'u') AND
RIGHT(city, 1) IN ('a', 'e', 'i', 'o', 'u')
이 방법외에도 정규식을 이용해, 원하는 자료를 검색할수 있다. 조건이 다소 복잡한 경우라면, 정규표현식을 사용하는것이 더 간결한 형태가 될 수 있다.
SELECT DISTINCT CITY
FROM STATION
WHERE CITY REGEXP '^[aeiou].*[aeiou]$';
정규 표현식은 WHERE NAME REGEXP의 형태로 사용한다. 쿼리를 설명하자면 다음과 같다.
1) '^[]' 를 이용하면, 대괄호 안에 있는 문자열로 시작하는 CITY를 찾는다.
2) .*는 시작된 문자 이후 어떤 문자의 반복을 나타낸다.
(시작과 끝 사이에 알파벳이 있어도 되고, 없어도 된다)
3) '[]$' 는 대괄호안에 포함된 문자열로 끝나는 CITY를 찾는다.
이렇게 '^[].*[]$' 를 이용하면 특정 문자로 시작하고 끝나는 도시를 찾아낼 수 있다.
'sql' 카테고리의 다른 글
[SQL] ROW_NUMBER / RANK / DENSE_RANK (0) | 2022.12.27 |
---|---|
[SQL] NESTED CASE (0) | 2022.12.26 |
[SQL] COUNT()와 NULL (0) | 2022.12.24 |
[SQL] 조건에 맞는 숫자 탐색 (0) | 2022.12.24 |
[SQL] REGEXP (0) | 2022.12.24 |