출처
문제
- OCCUPATIONS 에 있는 모든 이름의 알파벳순 목록을 쿼리하고 바로 뒤에 각 직업의 첫 글자를 괄호로 묶습니다(예: 괄호로 묶음). 예: , , 및 . AnActorName(A)ADoctorName(D)AProfessorName(P)ASingerName(S)
- OCCUPATIONS 에서 각 직업의 발생 횟수를 쿼리합니다 . 발생 항목을 오름차순 으로 정렬 하고 다음 형식으로 출력합니다.
여기서 는 OCCUPATIONS[occupation_count] 에서 직업의 발생 횟수이고 는 소문자 직업 이름 입니다 . 동일한 직업이 두 개 이상일 경우 알파벳순으로 정렬해야 합니다.[occupation][occupation_count]
문제에 대한 해석
- 쿼리1 : 이름 + (직업의 첫글자)를 출력하고 이름 순으로 오름차순 정렬
- 퀴리2 : 각 직업의 개수를 세서There are a total of [occupation_count] [occupation]s.으로 출력
풀이(MYSQL)
select
CONCAT(Name,'(', SUBSTR(OCCUPATION,1,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;
작동순서
💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환
select
CONCAT(Name,'(', SUBSTR(OCCUPATION,1,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;
- FROM 절: OCCUPATIONS테이블에서
- SELECT 절
- SUBSTR함수를 사용하여 OCCUPATION의 첫글자를 출력
- CONCAT 함수를 사용하여 Name +( + OCCUPATION의 첫글자 + )를 합쳐라
- ORDER BY 절: Name 오름차순
- 결과반환
- FROM 절: OCCUPATIONS테이블에서
- Group by절 : OCCUPATION을 기준으로
- SELECT 절
- COUNT함수를 사용하여 OCCUPATION의 수를 집계하고
- CONCAT 함수를 사용하여 There are a total of + OCCUPATION의 수 + OCCUPATION의 소문자 + s.)를 합쳐라
- ORDER BY 절: OCCUPATION의 수, OCCUPATION의 오름차순
- 결과반환
배운점
- CONCAT(TEXT1,TEXT2) - TEXT1과 TEXT2의 문자열을 합치는 함수
- SUBSTR(컬럼,몇번째에서,어디까지)
- 문제의 예시를 잘 보라 -> 띄어쓰지, 추가 글자
'문제풀이 > SQL(My sql)' 카테고리의 다른 글
[문제풀이] Hacker Rank - Type of Triangle (0) | 2024.06.05 |
---|---|
[문제풀이] Hacker Rank - 나머지 구하기 (0) | 2024.06.04 |
[문제풀이] 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2024.01.30 |
[문제풀이] 그룹별 조건에 맞는 식당 목록 출력하기 (1) | 2024.01.30 |
[문제풀이] 오프라인/온라인 판매 데이터 통합하기 (0) | 2024.01.30 |