프로그래머스 SQL 문제도 다 풀었고 hackerrank로 넘어갑니다.
문제
https://www.hackerrank.com/challenges/the-pads/problem
The PADS | HackerRank
Query the name and abbreviated occupation for each person in OCCUPATIONS.
www.hackerrank.com
풀이
우선 두 가지 방식으로 출력이 진행되어야 한다.
1. Name(A)와 같은 (직업 이니셜)의 형태가 포함된 출력 (ex. Ashely(P), Christeen(P))
주의할 점은 직업의 수가 4개만 존재한다는 것이다. [Doctor Professor Singer Actor]
SELECT concat(name,'(',substr(Occupation,1,1),')') as name
FROM OCCUPATIONS
ORDER BY name;
간단하게 substr과 concat을 사용해서 만들어주면 된다.
2. There are a total of [occupation_count] [occupation] s. 의 형태로 직업의 count를 출력할 것.
여기서 주의할 점은 occupations가 기존에는 Doctor와 같이 첫 글자가 대문자이나 출력값에서는
모두 소문자로 출력해야 하는 점이다. (이 부분이 가장 어려웠다..)
WITH CTE2 AS (
SELECT count(*) as c, occupation
FROM OCCUPATIONS
GROUP BY Occupation
ORDER BY 1
)
, CTE3 AS (
SELECT CONCAT('There are a total of ',c,' ',lower(occupation),'s.') as name
FROM CTE2
)
SELECT name
FROM CTE3;
GROUP BY를 사용해서 각 직업별 count를 계산하고 이를 concat을 활용해서 문장의 형태로 만들어주었다.
'코딩테스트 > SQL' 카테고리의 다른 글
SQL > LeetCode 177. Nth Highest Salary (MySQL) (0) | 2024.08.03 |
---|---|
SQL > 프로그래머스 276035 [level 4] FrontEnd 개발자 찾기 (0) | 2024.07.31 |
SQL > 프로그래머스 131124 [level 4] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2024.07.30 |
SQL > 프로그래머스 276036 [level 4] 언어별 개발자 분류하기 (0) | 2024.07.02 |
SQL > 프로그래머스 59413 [level 4] 입양 시각 구하기(2) (0) | 2024.07.01 |