1. Query an alphabetically ordered list of all names in OCCUPATIONS, immediately followed by the first letter of each profession as a parenthetical (i,e.: enclosed in parentheses).
For example : AnActorName (A), aDoctorName (D), AProfessorName (P), and ASingerName (S).
2. Query the number of ocurrences of each occupation in OCCUPATIONS. Sort the occurrences in ascending order, and output them in the following format : There are a total of [occupation_count] [occupation]s.
where [occupation_count] is the number of occurrences of an occupation in OCCUPATIONS and [occupation] is the lowercase occupation name. if more than one Occupation has the same [occupation_count], they should be ordered alphabetically.
아따 문제길다잉
이름, 직업 속성이 있고 직업에는 doctor, actor, singer, professor 4가지가 존재한다.
문제는 다들 이해했다고 생각하겠습니다,,
아근데 정작 나는 문제안보고 밑에 아웃풋 보고 풀다가 풀이를 적을 때 쯤에야 문제를 자세히 봤는데,, 답이 다있네그냥
역시 정답은 문제에 숨어있습니다,,
SELECT NAME,
CASE WHEN OCCUPATION = 'DOCTOR' THEN CONCAT(NAME, '(', LEFT(OCCUPATION,1), ')')
WHEN OCCUPATION = 'ACTOR' THEN CONCAT(NAME, '(', LEFT(OCCUPATION,1), ')')
WHEN OCCUPATION = 'SINGER' THEN CONCAT(NAME, '(', LEFT(OCCUPATION,1), ')')
WHEN OCCUPATION = 'PROFESSOR' THEN CONCAT(NAME, '(', LEFT(OCCUPATION,1), ')')
ELSE NULL END
FROM OCCUPATIONS
ORDER BY NAME
나는 처음에 이런식으로 쿼리를 썼다.
접근이 좋았다고해야되나 안좋았다고해야하나~
나무를 심는 방법은 좋았는데 그걸로 숲을 만드는 요령은 부족했던 것 같다.
저걸 아주 간단하게 줄이면
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), OCCUPATION
이렇게 된다.
concat 안에 그냥 다때려박아넣으면 아주 깔끔하고 간단했다.
내가 맨 처음에 작성했던 저 위에꺼는 분명 잘 돌아가는 코드이고 틀렸다고 할 순 없지만
다른사람이 작성한 이런 깔끔한 코드를 보면 아 아직멀었군 하는 생각이 든다.
그래도 반복해서 풀면 그 과정에서 나아지리라 생각한다~
앞으로 문제를 잘 보고 어떻게 하면 코드를 더 간결하게 적을 수 있을지 고민하는 시간을 더 가져봐야겠다!
'SQL' 카테고리의 다른 글
[HackerRank] [MySQL] Weather Observation Station 15 (0) | 2024.01.12 |
---|---|
[MySQL] MOD 함수로 짝수/홀수 찾기 (0) | 2024.01.11 |
[HackerRank] [MySQL] Weather Observation Station 6 (0) | 2024.01.10 |
[프로그래머스] [MySQL] LV.3 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (CONCAT, SUBQUERY, JOIN) (0) | 2024.01.04 |
[프로그래머스] [MySQL] LV.3 헤비 유저가 소유한 장소 (SUBQUERY) (0) | 2024.01.04 |