본문 바로가기

열정가득한 개발자의 이야기/hacker Rank SQL 문제

해커랭크 mysql advanced select 문제

 

안녕하세요! 

프로그래머스의 sql은 다 풀어서 해커랭크 꺼를 풀어봤습니다.

근데 음.. 쉬운건 너무 기초적인 것 밖에 안 나와서 역시 프로그래머스문제가 훨씬 좋은것같긴합니다. 

 

해당 문제는 난이도 중정도입니다! 문제가 영어라서 뭔가 정신줄 놓을 것 같은데 해석해 보면 그리 어려운 문제는 아닙니다.

sample output처럼 기존 테이블의 데이터를 가져와서 아웃풋과 동일하게 만들어주면됩니다.

 

이 문제는 쿼리 두 개를 사용해야 하고 두 쿼리 모두 똑같이 concat이 필요한 문제예요!

 

해커랭크 advanced select 문제

 

 

그래서 저의 답안은 아래와 같습니다.

 

 

쉽다~ 이러면서 식 다 넣고 run code를 눌렀는데 계속 에러가 뜨는 거예요

아무리 생각을 해봐도 안 돌아갈 코드가 아닌데.. 그래서 보니 처음 select 문 order by 뒤에 ';'이 걸 빠트렸더라고요

두 개의 문장을 연이어서 사용할 땐, 필히 사용해줘야 하나 봅니다.

 

문제를 간단하게 풀이해 보자면 아래 왼쪽의 테이블의 내용을 오른쪽의 내용과 같이 한 줄로 합치고, 직업의 이름은 맨 앞글자만 가져와야 합니다. 그래서 합치는 건 concat이란 메서드를 사용했고, 앞 글자만 가져오는 건 left를 사용해서 가져왔습니다.

그리고 잘 보시면 이름 순으로 나열이 된 걸 아실 수 있습니다. 그래서 order by로 처음 select 문장을 마무리해 줬습니다.

 

두 번째 select문도 거의 비슷한 방식으로 푸시면 됩니다..

다른 점은 직업의 이름은 모두 대문자로 시작하는데 이건 소문자로 아웃풋을 만들어 줘야 한다는 겁니다. 그래서 lower함수를 사용하여 바꿔주고 직업의 수를 세야 하니 집계함수인 count를 사용하고, group by를 해서 묶어 줬습니다.

 

미디엄인데 그리 어렵지 않아서.. 프로그래머스가 더 좋아요..