본문 바로가기
SQL 문제 풀기/2. SQLD 기출 : 2024.3.01~2024.4.25

<SQLD 24> count 그룹함수/연산자 우선순위에 대한 기출문제

by HYEHYE_SON 2024. 3. 24.
728x90

매일 SQLD 기출 문제 풀기 챌린지


 


문제 24.

다음 SQL의 결과는 무엇인가?

 

[ 테이블명: SQLD24 ]

N1 ID N2
200 A T1
250 B T2
300 NULL T3

 

 

SQL :

SELECT COUNT(*)
  FROM SQLD24
  WHERE N1 >= 200 OR N2 IS NULL AND ID = 'B';

 

 

 

답           ?           

 

 


 

해설해보기

이 문제에서 집중해야할 것은, 연산자 우선순위이다.
SQL에서는 AND 연산자가 OR 연산자보다 우선순위가 높다. 

 

그래서 문제에서 제시한 쿼리를 괄호로 묶어서 보면, 아래와 같다.

SELECT COUNT(*)
  FROM SQLD24
  WHERE (N1 >= 200) OR (N2 IS NULL AND ID = 'B');

 

위 쿼리를 기반으로 설명하면,

 

N1 이 200 이상인 행은 3개이다.

N2 가 NULL이면서 ID가 B인 행은 없다.

 

따라서 3 + 0 = 3 이기 때문에 정답은 3이다. 

 

 

 


관련 스크립트

CREATE TABLE SQLD24 (
    N1 INT,
    ID VARCHAR(255),
    N2 VARCHAR(255)
);

INSERT INTO SQLD24 (N1, ID, N2) VALUES (200, 'A', 'T1');
INSERT INTO SQLD24 (N1, ID, N2) VALUES (250, 'B', 'T2');
INSERT INTO SQLD24 (N1, ID, N2) VALUES (300, NULL, 'T3');


commit;

 
 
 
 
 
 
 
 
 
 

반응형