DB/SQL

[HackerRank : SQL - oracle] The PADS

nokii 2022. 10. 14. 15:20

[문제]

다음 두 결과 집합을 생성합니다.
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 로 정렬해준다.