https://www.hackerrank.com/challenges/the-pads/problem?isFullScreen=true

 

The PADS | HackerRank

Query the name and abbreviated occupation for each person in OCCUPATIONS.

www.hackerrank.com

코드설명

 UNION + ORDER BY + STRING ||  을 활용합니다.

 

처음에 잘못작성했었던 방식입니다.

1. 문자열 리터럴로는 " " 가 아닌 ' '를 사용해야합니다.

2. UNION할시에 각각의 SQL은 ORDER BY를 각각 적용하지 못합니다.

아래의 코드가 과연맞을까요?

SELECT O.NAME || '(' || SUBSTR(O.OCCUPATION, 1, 1) || ')'
FROM OCCUPATIONS O
-- ORDER BY O.NAME
UNION
SELECT 'There are a total of ' || COUNT(O.NAME) || ' ' || LOWER(O.OCCUPATION) || 's.'
FROM OCCUPATIONS O
GROUP BY O.OCCUPATION;
-- ORDER BY COUNT(O.NAME) ASC;

맞습니다.

만약 ORDER BY 가 두개의 쿼리 모두에 존재한다면 안되겠지요.

3. UNION 할시에는 컬럼의 개수가 일치해야 합니다.

ORACLE 코드

정답코드1입니다.

SELECT * 
FROM (SELECT O.NAME || '(' || SUBSTR(O.OCCUPATION, 1, 1) || ')'
FROM OCCUPATIONS O
UNION
SELECT 'There are a total of ' || COUNT(O.NAME) || ' ' || LOWER(O.OCCUPATION) || 's.'
FROM OCCUPATIONS O
GROUP BY O.OCCUPATION )

 

 

+ Recent posts