728x90
문제
https://www.hackerrank.com/challenges/the-pads/problem?isFullScreen=true
The PADS | HackerRank
Query the name and abbreviated occupation for each person in OCCUPATIONS.
www.hackerrank.com
- 이름 (직업 맨 앞 글자) 형식
- 직업 맨 앞 글자 : 대문자
- 이름 알파벳 순으로 정렬하기
- There are a total of occupation_count, occupations.
- occupation_count : 직업 별 등장한 개수
- occupation : 직업, 소문자로 적기
- occupation_count 오름차순, occupation 오름차순 정렬하기
테이블
OCCUPATIONS |
![]() |
풀이과정
1 2 3 4 5 6 7 8 | 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), Occupation; | cs |
두 개의 SELECT문으로 나눠서 출력 → 한 쿼리문이 모두 실행된 후, 그 다음 쿼리문 실행됨
- 첫 번째 쿼리문의 경우, 이름(직업 첫글자 대문자) 를 출력하는 것이기 때문에
LEFT 함수로 직업의 첫 글자를 가져오고UPPER 함수로 대문자로 만들어줌 - 두 번째 쿼리문의 경우, 각 직업의 개수를 세줘야 하기 때문에 직업으로 GROUP BY 한 후 COUNT 해줌.
해당 직업은 모두 소문자로 적어야 하기 때문에 LOWER 함수를 써주고, 전체 문자열을 CONCAT으로 연결해줌
배운 점
▶ CONCAT 함수
: 문자열 합칠 때 사용
: 숫자와 문자가 함께 입력되어도 오류 안 남
>> CONCAT 함수에 입력된 값은 문자형으로 변환 후 합쳐지기 때문
cf. 더하기(+) 연산자
: 문자열 합칠 때 사용
: 문자열 + 문자열은 에러 안 남
↔ 문자열 + 숫자 조합은 에러 남
: 수치형으로 변환하든, 문자형으로 변환한 후 사용 가능
cf. CONCAT_WS함수 (구분자로 합치기)
CONCAT_WS('사용할 구분자', '문자열', '문자열', ..., '문자열')
▶ 데이터타입 변환 함수 : CAST, CONVERT
CAST 함수
CAST(값 AS 데이터형식)
CONVERT 함수
CONVERT(값, 데이터형식[길이]))
변환 가능한 데이터 형식 |
TIME |
DATE |
DATETIME |
NCHAR[(N)] |
CHAR[(N)] [charset_info] |
JSON |
BINARY[(N)] |
DECIMAL[(M[,D])] |
SIGNED [INTEGER] |
UNSIGNED [INTEGER] |
728x90
댓글