[Weather 20 ] 2번째 쿼리도 따라 했는데 왜 다 실패일까요?
372
8 asked
SELECT ROUND(AVG(LAT_N), 4)
FROM (
SELECT LAT_N
, PERCENT_RANK() OVER(ORDER BY LAT_N) rank
FROM station
) sub
WHERE rank = 0.5틀렸데요.
왤까요?
....................................................................
Answer 1
1
같은 문제에 대한 질문을 3개의 게시글로 하셔서 여기에서 한꺼번에 답변드리겠습니다.
우선 강의에서 소개드린 쿼리는 MySQL에서 정상적으로 실행됩니다.
해커랭크의 어떤 문제에서는 윈도우 함수를 지원하는 MySQL 버전을 사용하고, 어떤 문제에서는 지원하지 않는 버전을 사용해 문제마다 차이가 있는 것 같은데요.
이 문제에서는 가능한 것을 조금 전에 다시 한 번 확인했습니다.
그런데 MySQL에서는 ‘rank’라는 단어를 예약어로 사용하고 있기 때문에, 컬럼의 alias로 이 단어를 사용할 수 없습니다.
rank 대신 다른 이름으로 변경해서 실행해 주세요.
MSSQL에서 실행할 때는
SELECT CAST(ROUND(AVG(LAT_N), 4) AS DECIMAL(10,4))과 같이 데이터 타입 변환을 해 줘야 소수점 4자리까지의 숫자 데이터로 출력됩니다.자세한 내용은 이 문서를 참고하시길 바랍니다.
이처럼 DBMS에 따라 상이한 점들이 있는데, WHERE 절에서 CASE WHEN을 쓰는 방법도 다릅니다.
올려주신 오류 메세지들은 이 부분 때문에 나온 것입니다.
MSSQL에서는 아래와 같이 작성하셔야 합니다.
SELECT CAST(ROUND(AVG(LAT_N), 4) AS DECIMAL(10,4))
FROM (
SELECT
ROW_NUMBER() OVER(ORDER BY LAT_N) row_num,
COUNT(*) OVER() n,
LAT_N
FROM station
) sub
WHERE
CASE
WHEN n % 2 = 1 THEN
CASE
WHEN row_num = (n+1)/2 THEN 1
ELSE 0
END
ELSE
CASE
WHEN row_num IN (n/2, (n/2)+1) THEN 1
ELSE 0
END
END = 1;
강의기간 연장문의
0
96
2
HackerRank : Weather Observation Station 11 문제풀이
0
116
1
SET4의 3번 자리바꾸기 문제 다른 풀이
0
185
1
set 3의 3번 문제- 데이터의 개수가 짝수일 때 질문
0
263
2
set 1 - 2번 문제풀이
0
258
1
세트2번 Binary Tree Nodes 질문입니다!
0
225
2
고급문제풀이set1 3번 문제
0
249
2
고급문제풀이 3번 INNERJOIN 활용시 오류
0
269
1
회사일하다 보니까 다 못듣고 수강기간이 다끝나가는데 .,. 수강기간 연장은 어떻게 할수 있나요?ㅜㅜ
0
320
1
[Weather 20] 따라 했는데 왜 작동 안해요?
0
274
1
weather-20 왜 작동 안하는건가요?
0
226
1
Ollivander's Inventory 윈도우 함수 min() over
0
310
1
LeetCode 626. Exchange Seats 리트코드 제출 오류
0
506
2
섹션4에 3번 문제풀이 질문
0
376
2
SQL Project Planning 풀이 관련 문의
0
579
2
섹션 1번 4번문제 풀이
1
283
1
섹션1 2번 문제풀이 강의
0
301
1
set2 - 1 같게 작성했는데 답이 이상합니다.
0
285
1
max함수를 써서 풀지는 못하나요?
0
297
1
윈도우 함수를 이용해서 풀고 싶어서 써봤습니다. 더 간단하게 줄일 수 있을까요?
0
257
1
(Hacker Rank)Binary Tree 문제 질문
0
325
1
쿼리 두개로 작성하고 싶지 않아 하나로 어떻게든 만들어 봤습니다.
0
292
1
이런 풀이는 왜 안되는지 궁금해요
0
273
1
소수점 이하 숫자가 안나옵니다 ㅠㅠ
0
323
2

