문제 링크 :
https://www.hackerrank.com/challenges/the-pads/problem
1. 요구 사항 이해
이름 및 직업의 첫 글자를 소괄호parentheses로 감싼 뒤 이름에 이어 출력
2. 설계/검증
✔️ 문자 뽑아내기 SUBSTR() 또는 LEFT() 사용
✔️ 문자열 이어붙이기 CONCAT()함수 사용
✔️ 문자열을 소문자로 변환하는 LOWER() 함수 사용
3. 정상 코드
Weather Observation Station 18, 기상관측소 18호
SELECT CONCAT(NAME, "(", 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) ASC;
/*출력 결과
Aamina(D)
Ashley(P)
Belvet(P)
Britney(P)
Christeen(S)
Eve(A)
Jane(S)
Jennifer(A)
Jenny(S)
Julia(D)
Ketty(A)
Kristeen(S)
Maria(P)
Meera(P)
Naomi(P)
Priya(D)
Priyanka(P)
Samantha(A)
There are a total of 3 doctors.
There are a total of 4 actors.
There are a total of 4 singers.
There are a total of 7 professors.
*/
내부 동작 순서
첫번째 쿼리
1. FROM 절
OCCUPATIONS 테이블을 대상으로 합니다.
2. SELECT 절
각 직업의 이름과 직업의 첫 글자를 괄호 안에 묶어서 반환합니다.
3. ORDER BY 절
결과를 NAME을 기준으로 정렬합니다.
두번째 쿼리
1. FROM 절
OCCUPATIONS 테이블을 대상으로 합니다.
2. GROUP BY 절
OCCUPATION을 기준으로 그룹화합니다.
3. SELECT 절
각 그룹(직업)별로 해당 직업의 수를 세고, 이를 문자열로 조합하여 반환합니다.
4. ORDER BY 절
결과를 각 직업의 수(COUNT(OCCUPATION))를 기준으로 오름차순으로 정렬합니다.