[HackerRank] The PADS

like0·2022년 3월 17일
0

DATABASE

목록 보기
1/1

문제 설명

문제 링크

Name, Occupation 두 개의 column이 있는 "OCCUPATIONS"라는 테이블이 있다.

1. 먼저, name이 알파벳 순서대로 정렬되어 나타난다. 단, name만 나타나는 것이 아니고 해당 name의 Occupations의 첫글자도 함께 보여주어야 한다.
2. Occupations의 count 순서대로 정렬하고, 그 순서가 같다면, Occupation을 알파벳 순서대로 정렬해서 보여주어야 한다.

생각 정리

  1. name을 알파벳 순서로 정렬
    • 이 때, 해당 name의 Occupation 첫글자도 보여주어야 한다.
    • Occupation의 첫글자만 나타내는 것, name과 Occupation의 첫글자를 함께 나타내는 것 이 필요하다.
  2. Occupation의 count 횟수 순서로 정렬 (어려웠음)
    • count횟수가 같으면, 그 때는 Occupation를 알파벳 순으로 정렬

정리된 생각에 대한 논리

1.
문자열에서 필요한 만큼 자를 때 사용 한 것 : LEFT함수
Occupation = "Doctor" 라면,
LEFT(Occupation, 1) : D // 해당 Occupation에서 왼쪽에서부터 1글자만 자른다.

문자열을 서로 붙일 때 사용한 것 : concat

2.
Occupation의 count횟수 순서로 정렬한다 :
-> order by count(Occupation)가 사용되겠지,,?
-> 해당 Occupation에 대한 count인지 어떻게 알지 ?? => group by 사용

완성

Select concat(Name, concat(concat( "(", LEFT(Occupation, 1)), ")")) 
From OCCUPATIONS 
ORDER BY Name;

Select concat(concat("There are a total of ", COUNT(Occupation)), concat(" " , Lower(Occupation), "s.")) 
from OCCUPATIONS group by Occupation 
order by COUNT(Occupation);
profile
배우고 성장하는 개발자가 되기!

0개의 댓글