알고리즘/해커랭크

[MySQL/Select] HackerRank The PADS

waterground 2022. 1. 13. 12:58

1. 문제

https://www.hackerrank.com/challenges/the-pads/problem?isFullScreen=true&h_r=next-challenge&h_v=zen 

 

The PADS | HackerRank

Query the name and abbreviated occupation for each person in OCCUPATIONS.

www.hackerrank.com

 

2. 풀이

  • 이름을 나열하는 쿼리과 직업별 사람수를 세는 쿼리를 각각 작성한다.
  • 이름을 나열하는 쿼리에서는
    • AnActorName(A) 형식으로 만들기 위해 concat을 사용한다.
    • 직업의 첫글자를 잘라내기 위해 left()를 사용한다. substring(occupation, 1, 1)도 가능하다
  • 직업별 사람수를 세는 쿼리
    • 형식에 맞춘 문장을 만들기 위해 concat을 사용한다.
    • 직업을 소문자로 하기 위해 lower()을 사용하고, 직업별 사람수 오름차순, 이름 글자별로 오름차순 정렬한다.

 

3. 코드

select concat(name, '(', left(occupation,1), ')')
from occupations
order by name;

select concat('There are a total of ', count(*), ' ' , lower(occupation), 's.')
from occupations
group by occupation
order by count(*) asc, occupation asc;