inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[백문이불여일타] 데이터 분석을 위한 중급 SQL

해커랭크 Group by 예제 oracle 질문이요!!

246

sql 욜라어려움

작성한 질문수 1

1

강의 잘듣고있습니다. 너무 유익해요 ㅠㅠ 

다름이 아니라 oracle에서는 alias가 서브쿼리없이는 조건절에 사용할 수 없는것 같은데 그러면 아래 코드처럼 

SELECT A.*

FROM (

        SELECT SALARY * MONTHS AS EARNINGS

              ,COUNT(*)

        FROM EMPLOYEE

        GROUP BY SALARY * MONTHS

        ORDER BY SALARY * MONTHS DESC

      ) A

WHERE ROWNUM = 1   

salary * months 를 반복해서 3번이나 적어줘야 되더라고요 너무 비효율적인거같아서 서브쿼리?안에서  alias만들어서 alias를 바깥에서 사용하는 방법을 찾아봤는데 정렬도 꼬이고 값이 이상해져서 사용방법을  잘 모르겠어요.. 

오라클도 mysql처럼 alias를  조건절에 사용할 수 있는 방법이 있을까요?

      

        

sql

답변 1

1

이보민

안녕하세요 sql 욜라어려움님

명령어 실행 순서 때문에 SELECT의 alias를 GROUP BY에서 사용하지 못하는 것으로 확인 되는데요.

사실 이 부분은 MySQL에서도 확인할 수 있는 문제 입니다. 해커랭크 경우 인터프리터의 특이성으로 인해 SELECT에서 사용한 alias가 GROUP BY 구문에서도 사용이 가능한 것으로 보이나 통상적인 쿼리구문의 실행순서는 GROUP BY의 조건이 모두 연산 된 후 SELECT 구문이 실행되므로 select에서 사용한 alias는 GROUP BY에서 사용할 수 없는 것이 맞습니다. 강의 제작시 미처 확인하지 못하여 혼란을 드린 것 같네요.

때문에 oracle에서 작성하신 쿼리는 잘 작성된 것으로 보이며,

salary * months를 세번 적어주시는 것을 피하는 방법으로는 아래와 같이 서브쿼리를 한번 더 사용하시는 방법이 있으니 참고하시면 좋을 것 같습니다 :)

SELECT *
FROM (SELECT earnings
          ,COUNT(*)
    FROM (SELECT salary * months AS earnings FROM employee)
    GROUP BY earnings
    ORDER BY earnings DESC)
WHERE rownum = 1;

감사합니다

리트코드 1280. Students and Examinations

0

74

3

16강 LEFT JOIN 리트코드 (183. Customers Who Never Order) 관련 질문

0

89

2

African Cities 문제관련 질문

0

53

1

SQL 코딩테스트 질문

0

206

1

HACKER RANK에서 문제찾기

0

96

2

강의 자료 다운로드

0

90

2

Asian population 문제가 없어요

0

77

2

INNER JOIN 에서 A.키 쓸때 빨간 색 나오고 'dause'

0

66

2

별칭 관련해서 질문 있습니다.

0

79

2

rising temperature 문제 질문

0

98

2

해커랭크 TOP EARNERS 문제 질문

0

99

1

ON 뒤에 질문

0

94

2

INNER JOIN 질문. 강의와 결과값이 다릅니다.

0

196

3

END, 뒤에 * 붙이면 에러가 뜹니다

1

203

2

CustomerID가 중복되서 나타나요

0

233

3

별칭이 전체 테이블을 못 불러와요.

0

142

2

CASE WHEN 쿼리 오류 문의

1

325

3

CASE문제풀이 질문

0

124

1

Customers Who Never Order 풀다가 Alias관련 질문사항

0

136

1

Average Population 질문

0

129

1

Revising Aggregations - The Count Function 질문

0

104

1

Average Population of Each Continent 에대해서 질문

0

193

3

w3schools 에서 쿼리 작성 질문

0

159

1

INNER JOIN 할 때 NULL 값이 안보일 수도 있나요?

0

329

1