코딩테스트/SQL 코드카타

MySQL 해커랭크 | The PADS (CONCAT 함수와 '+' 연산자의 차이점, CAST, CONVERT함수)

ANNASENA 2024. 7. 10. 20:46
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