[문제]
다음 두 결과 집합을 생성합니다.
1. 직업 내 모든 이름의 알파벳 순으로 정렬된 목록을 조회하고, 괄호로 묶은 각 직업의 첫 글자를 바로 뒤에 붙입니다(예: 괄호로 묶습니다. 예: 배우 이름(A), 의사 이름(D), 교수 이름(P) 및 가수 이름(S)입니다.
2. 직종별 발생횟수를 조회하고 발생횟수를 오름차순으로 정렬하여 다음과 같은 형식으로 출력한다.
여기서 [occupation_count]는 직종에서의 직종 발생 횟수이고 [occuption]은 소문자 직종 이름입니다. 둘 이상의 직종에 동일한 [occount_count]가 있는 경우 알파벳 순으로 정렬해야 합니다.

https://www.hackerrank.com/challenges/the-pads/problem?isFullScreen=true&h_r=next-challenge&h_v=zen
The PADS | HackerRank
Query the name and abbreviated occupation for each person in OCCUPATIONS.
www.hackerrank.com
[풀이]
SELECT name || '(' || SUBSTR(occupation,1,1) || ')'
FROM occupations;
SELECT 'there are a total of' || COUNT(occupation) || ' ' || occupation || 's.'
FROM occupations
GROUP BY occupation
ORDER BY COUNT(occupation), occupation;
※ 아무리 실행을 돌려봐도 오류로 나오지만, 이것저것 검색해 본 결과 다른 이들과 다른 문법을 못찾겠다.... 이건 이후에 다시 테스트 해보기로 하고
- || : 문자열을 더할 때 사용하는 논리 연산자로, 라인을 2번 입력해 이 같은 모습을 띈다. || '입력할 문자열' || 로 외따옴표 안에 넣어주며, 연결할 곳에 || 을 사용한다.
- SUBSTR (컬럼명,시작인덱스,인덱스갯수) : 구할 컬럼명의 문자열을 구한다.
- COUNT(컬럼명) : 해당 컬럼의 각 행의 개수를 센다.
- GROUP BY 컬럼명 : 해당컬럼을 그룹화하여 같은것끼리 묶어준다.
- ORDER BY COUNT(컬럼명), 컬럼명 [ORDER BY 정렬조건1, 정렬조건2] : 기본 정렬은 ASC(오름차순)이며, COUNT함수로 각 행의 발생횟수를 구한 뒤, 그 횟수로 정렬한다.(단, GROUP BY로 컬럼의 행들의 값중 같은 값은 그룹화하여 묶어주었기때문에, 같은 값의 행은 동일한 결과값이 출력되어 각각의 행에 셋팅된다.) 또한, 정렬조건1 의 값이 같을 경우에 지정해준 정렬조건2 로 정렬해준다.
'DB > SQL' 카테고리의 다른 글
| [HackerRank : SQL - oracle] Revising Aggregations - The Sum Function (0) | 2022.11.20 |
|---|---|
| [HackerRank : SQL - oracle] Revising Aggregations - The Count Function (0) | 2022.11.20 |
| [HackerRank : SQL - oracle] Type of Triangle (0) | 2022.10.14 |
| [HackerRank : SQL - oracle] Employee Salaries (0) | 2022.10.13 |
| [HackerRank : SQL - oracle] Employee Names (0) | 2022.10.13 |