본문 바로가기
언어|프로그램 메모장/SQL - 문제 풀기

[HackerRank] THE PADS

by 히민히 2022. 12. 23.

출처: [해커랭크] the pads

sql 문제를 풀며, 다시 내용을 정립하는 시간을 가지기로 하였다! 해커랭크의 medium, LeetCode, solvesql을 풀어나가기로!

사실 gitblog를 세팅해서 그곳에서 업데이트하고 싶었는데, 일주일 내내 찔끔하다가 결국 티스토리로 돌아왔다 🥲

문제

OCCUPATIONS에 있는 모든 이름의 알파벳순으로 정렬된 목록을 쿼리, 각 직업의 첫 글자를 괄호로 묶어서 출력하라

출력 예시

Ashely(P)
Christeen(P)
Jane(A)
Jenny(D)
Julia(A)
Ketty(P)
Maria(A)
Meera(S)
Priya(S)
Samantha(D)
There are a total of 2 doctors.
There are a total of 2 singers.
There are a total of 3 actors.
There are a total of 3 professors.

첫번째 출력

  • 이름을 알파벳 순서로 나열
  • 각 직업의 첫 글자를 괄호 안으로 묶어서 함께 출력

두번째 출력

  • 각 직업의 수를 오름차순으로 출력
  • 직업은 소문자로 출력
  • There are a total of [직업 수][직업명]s. 형태

 

 

풀이

문자열을 합치기 때문에 concat, ||을 사용을 고려해야한다.

❗️주의) || 의 경우

  • oracle에서는 문자열 합치는 기능으로 활용
  • mysql에서는 논리연산자 참, 거짓 여부를 다루는 데 활용
SELECT concat(name, '(', SUBSTR(occupation,1,1),')')
FROM OCCUPATIONS
order by name, occupation;

SELECT concat('There are a total of ',  count(*), ' ', lower(occupation), 's.')
FROM OCCUPATIONS
group by occupation
order by count(*), occupation;

마지막에 '.'을 함께 출력 안해서, 생각보다 시간이 걸렸다. 출력 결과를 먼저 제대로 정립하고 문제를 풀어나갈 것!

추가로,

  • SUBSTR 대신해서, LEFT(occupation, 1)으로 사용이 가능
  • count(*) 으로 사용하였지만 (해당 문제에서는 같은 결과를 얻을 수 있음) count(name), count(occupation) 으로도 사용이 가능함.
반응형

'언어|프로그램 메모장 > SQL - 문제 풀기' 카테고리의 다른 글

[HackerRank] Binary Tree Nodes  (0) 2022.12.24

댓글