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

<SQLD 12> 논리 연산자 AND와 OR의 우선순위 기출문제

by HYEHYE_SON 2024. 3. 12.
728x90

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


 


문제12.

다음 주어진 테이블에서 SQL문의 결과값으로 알맞은 것은?  
 


[ 테이블명 : SQLD_12 ]

JOB_TITLE EMP_NAME SALARY
CLERK JACSON 2000
SALESMAN KING 3000
SALESMAN BOAN 4000
CLERK LUCAS 5000
SALESMAN CADEN 6000
CLERK GRAYSON 7000
DEVELOPER LOGAN 8000
CLERK JIM 9000
SELECT COUNT(*)
 FROM SQLD_12
 WHERE JOB_TITLE = 'CLERK'
 OR (EMP_NAME LIKE 'K%' AND SALARY >= 3000)

 

 4건
 5건
 6건
 8건
 


해설해보기

#1. SELECT절
count(*) 를 사용하여 null행을 포함한 모든 행의 수를 출력한다.

#2. FROM 절
데이터를 가져올 테이블명 입력

#3. WHERE절
- JOB_TITLE이 CLEKR인 행을 가져온다(JACSON, LUCAS, GRAYSON, JIM이 해당 됨)
- 또는(OR) 
- EMP_NAME이 K로 시작하는 사원이면서(AND) 월급이 3000이상
   두 조건 모두에 해당하는 사원은 = KING

   *EMP_NAME LIKE 'K%'
    - Like : 텍스트 데이터의 일부를 검색할때 사용
    - emp_name 컬럼에서 K로 시작하는 사람을 추출하고자 하는 것이다.

   위 함수는 LIKE와 와일드 카드(%)이다.
   와일드 카드(%)는 그 자리에 무엇이 와도 상관없고, 개수가 몇 개가 와도 상관없다는 의미이다.
   따라서 EMP_NAME 'K%'은 아래와 같이 해석할 수 있다
   'K라는 문자로 시작하는데, 뒤에는 아무거나 와도 상관없다.
    즉, K로 시작하는 EMP_NAME의 값을 출력하라'


따라서 
JACSON, LUCAS, GRAYSON, JIM, KING 이므로 총 5건이다.

정답은  

 
직접 실행해보기

SELECT COUNT(*)
 FROM SQLD_12
 WHERE JOB_TITLE = 'CLERK'
 OR (EMP_NAME LIKE 'K%' AND SALARY >= 3000);

 


관련 스크립트

drop table sqld_12;

create  table  sqld_12
( job_title      varchar2(10),
  emp_name   varchar2(10),
   salary         number(10) );

insert  into  sqld_12  values( 'CLERK',  'JACKSON', 2000 );
insert  into  sqld_12  values( 'SALESMAN',  'KING', 3000 );
insert  into  sqld_12  values( 'SALESMAN',  'BOAN', 4000 );
insert  into  sqld_12  values( 'CLERK',  'LUCAS', 5000 );
insert  into  sqld_12  values( 'SALESMAN',  'CADEN', 6000 );
insert  into  sqld_12  values( 'CLERK',  'GRAYSON', 7000 );
insert  into  sqld_12  values( 'DEVELOPER',  'LOGAN', 8000 );
insert  into  sqld_12  values( 'CLERK',  'JIM', 9000 );

commit;

 
 
 

 

반응형