inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

3번 문제 풀이 1

COUNT(*)에서 WINDOW함수 쓰는 이유

281

함문주

작성한 질문수 27

2

궁금해서 

FROM절 서브쿼리에 있는

COUNT(*) OVER ()과

그냥 COUNT(*)를 적용해봤습니다.

후자는 오류가 뜨더군요!

1. 이유를 알고 싶습니다. 윈도우 함수의 갯수를 셀 때, 꼭 윈도우 함수를 적용해야 하나요?

-----추가질문 ------

SELECT CASE 
                           WHEN MOD(MAX(RN),2)=1
                           THEN 'ASD' ELSE NULL END

FROM (SELECT LAT_N  

         , ROW_NUMBER() OVER (ORDER BY LAT_N) RN

         FROM STATION) T2

2.  ASD는 그냥 넣은거구요, 저런 식으로 SELECT 절에서
Max(RN)으로 바로 사용해 행의 갯수를 세어 쿼리를 꾸려나가는 것은 안되나요??

3.  CASE WHEN 절에서 THEN 다음에 SELECT 절을 넣어 값을 받게 쿼리를 짰는데, 이런 구문은 왜 안되는 건가요?

sql

답변 1

1

지식공유자 J

1. COUNT(*) 만 조회할 때는 문제가 되지 않지만, COUNT(*)와 다른 컬럼 값을 함께 조회하는 것은 GROUP BY 절 또는 윈도우 함수가 있어야 가능합니다. 

2. MAX(RN) = 전체 행의 개수이므로 이걸 활용할 수도 있을 것 같네요! 'ASD' 대신에 문제에서 요구하는 LAT_N 값을 받을 수 있도록 쿼리를 발전시켜 보시면 될 것 같아요.

3. SELECT 절(서브쿼리)를 통해 출력되는 row의 수가 단 1개라면 문제되지 않습니다. 해당 값 1개를 받아와야 하기 때문에, 2개 이상의 row일 경우에는 에러가 납니다.

강의기간 연장문의

0

105

2

HackerRank : Weather Observation Station 11 문제풀이

0

122

1

SET4의 3번 자리바꾸기 문제 다른 풀이

0

196

1

set 3의 3번 문제- 데이터의 개수가 짝수일 때 질문

0

275

2

set 1 - 2번 문제풀이

0

267

1

세트2번 Binary Tree Nodes 질문입니다!

0

230

2

고급문제풀이set1 3번 문제

0

253

2

고급문제풀이 3번 INNERJOIN 활용시 오류

0

274

1

회사일하다 보니까 다 못듣고 수강기간이 다끝나가는데 .,. 수강기간 연장은 어떻게 할수 있나요?ㅜㅜ

0

324

1

[Weather 20 ] 2번째 쿼리도 따라 했는데 왜 다 실패일까요?

0

381

1

[Weather 20] 따라 했는데 왜 작동 안해요?

0

281

1

weather-20 왜 작동 안하는건가요?

0

233

1

Ollivander's Inventory 윈도우 함수 min() over

0

319

1

LeetCode 626. Exchange Seats 리트코드 제출 오류

0

510

2

섹션4에 3번 문제풀이 질문

0

386

2

SQL Project Planning 풀이 관련 문의

0

589

2

섹션 1번 4번문제 풀이

1

289

1

섹션1 2번 문제풀이 강의

0

307

1

set2 - 1 같게 작성했는데 답이 이상합니다.

0

289

1

max함수를 써서 풀지는 못하나요?

0

306

1

윈도우 함수를 이용해서 풀고 싶어서 써봤습니다. 더 간단하게 줄일 수 있을까요?

0

265

1

(Hacker Rank)Binary Tree 문제 질문

0

329

1

쿼리 두개로 작성하고 싶지 않아 하나로 어떻게든 만들어 봤습니다.

0

297

1

이런 풀이는 왜 안되는지 궁금해요

0

279

1