SQL/HackerRank(해커랭크)

HackerRank(해커랭크) MySQL The PADS 문제 답

진리뷰 2023. 10. 13. 09:00
반응형

 

HackerRank(해커랭크)-MySQL-The-PADS-문제-답-썸네일
The PADS

 

 

*MySQL 버전, advanced select 문제입니다.

 

 

 

해커랭크 The PADS 문제, 샘플, 설명

 

💡 쿼리 2개 작성

 

첫 번째 쿼리: 이름(직업명 앞글자) 형식

  • 이름: 알파벳 순 정렬
  • 직업명: 앞글자 하나만 대문자로 가져오기

 

두 번째 쿼리: 포맷에 따라 직업별 카운트 및 해당 직업명 가져오기

  • 직업 수 오름차순 정렬, 동일값일 경우 알파벳 순 정렬.
  • 직업명: 소문자로 풀네임 가져오기

 

해커랭크-the-pads-문제
The PADS 문제

 

 

해커랭크-the-pads-문제-샘플
The PADS 문제 샘플

 

 

해커랭크-the-pads-문제-설명
The PADS 문제 설명

 

 

 

해커랭크 The PADS 답

 

  • CONCAT

'이름(직업명), There are a total of [직업 수] [직업명] s.'처럼 특정 포맷의 결과물을 위해, 컬럼 데이터들을 합쳐야 하기에 사용. 

*추천 글  MySQL CONCAT과 || 유의점, 컬럼(필드) 문자열 합치기

  • UPPER, LOWER 

대문자, 소문자 형식이 조건이라 사용했다.

사실 해당 문제의 원데이터를 봤을 때 직업명 앞글자가 모두 대문자였으나, 조건에 맞춰 문제를 풀고자 사용.

  • LEFT

직업명 앞글자만 가져오기 위해, 왼쪽 첫 글자로 지정해서 사용.

  • GROUP BY, ORDER BY

첫 번째 쿼리는 이름 알파벳순 정렬이어서 ORDER BY만 사용.

반면 두 번째 쿼리는 직업 카운트를 위해 GROUP BY, 직업 수 및 직업명 알파벳 순 정렬 필요하므로 ORDER BY 사용. 

SELECT CONCAT(
name
, '('
, UPPER(LEFT(occupation, 1))
, ')'
)
FROM OCCUPATIONS
ORDER BY name;

SELECT CONCAT(
'There are a total of'
, ' '
, COUNT(occupation)
, ' '
, LOWER(occupation)
, 's.'
)
FROM OCCUPATIONS
GROUP BY occupation
ORDER BY COUNT(occupation), LOWER(occupation);

 

 

 

추가 정리

 

문자열 추출 시 사용하는 SUBSTRING 버전

SELECT CONCAT(
name
, '('
, UPPER(SUBSTR(occupation, 1, 1))
, ')'
)
FROM OCCUPATIONS
ORDER BY name;


SELECT CONCAT(
'There are a total of'
, ' '
, COUNT(occupation)
, ' '
, LOWER(occupation)
, 's.'
)
FROM OCCUPATIONS
GROUP BY occupation
ORDER BY COUNT(occupation), LOWER(occupation);

 


 

💡 SUBSTRING(=SUBSTR)

  • 특정 문자열, 컬럼 등에서 원하는 문자를 추출할 때 사용한다.
  • 추출하려는 문자열 범위(시작점~마지막점), 추출할 문자 길이를 지정해서 사용한다.
SUBSTR(문자열, 시작점, 마지막점);
SUBSTR(문자열 FROM [시작점] FOR [문자 길이]);
 
반응형
top