song's note

[Hackerrank - SQL] weather observation station 11 본문

공부/SQL

[Hackerrank - SQL] weather observation station 11

songxx 2022. 4. 9. 21:21

 

https://www.hackerrank.com/challenges/weather-observation-station-11/problem?isFullScreen=true&h_r=next-challenge&h_v=zen&h_r=next-challenge&h_v=zen&h_r=next-challenge&h_v=zen&h_r=next-challenge&h_v=zen 

 

Weather Observation Station 11 | HackerRank

Query a list of CITY names not starting or ending with vowels.

www.hackerrank.com

 

문제 

Query the list of CITY names from STATION that either do not start with vowels or do not end with vowels. Your result cannot contain duplicates.

CITY가 모음으로 시작하지 않거나 모음으로 끝나지 않는 CITY 를 중복없이 나열하라 

 

풀이

SELECT DISTINCT CITY 
FROM STATION 
WHERE SUBSTR(LOWER(CITY), 1, 1) NOT IN ('a', 'e', 'i', 'o', 'u') 
OR SUBSTR(LOWER(CITY), -1, 1) NOT IN ('a', 'e', 'i', 'o', 'u') ;

/*
WHERE NOT REGEXP_LIKE(lower(CITY), '^[aeiou]', 'i') 
OR NOT REGEXP_LIKE(CITY, '[aeiou]$') ;
*/

계속 풀었던 방식으로 SUBSTR과 LOWER, 그리고 IN을 사용해서 풀었는데 

자꾸 틀렸다고 해서 다른 사람들의 풀이를 찾아봤다. 

알고보니 문제를 잘못 읽어서  계속 AND 조건으로 풀고 있었기에 오류가 났던 것이었는데 ,

그것을 발견하기 전까지는 어떤 것을 해도 통과가 안되었다. 

 

그런 시행착오중에서 정규표현식을 이용해서 문제를 푼 사람들의 글을 보게 되었다. 

솔직히 SQL 에서 정규표현식이 가능한지도 몰랐는데... 

 

이 문제에서 쓴 

REGEXP_LIKE 는 문자열이 정규표현식의 조건에 부합하는지 체크하는 함수이며 WHERE 절에서 쓰일 수 있다. 

 

 

나중에 SQL정규표현식에 대해서도 공부해봐야겠다.