728x90
매일 SQLD 기출 문제 풀기 챌린지
문제3.
다음중 직업이 ANALYST 이거나 CLERK 이고 월급이 1200 초과하는 모든 컬럼을 출력하는 SQL을 2개를 고르시오 ?
( OR 가 먼저 수행되게하시오 )
① SELECT * FROM EMP
WHERE JOB IN ('ANALYST','CLERK') AND SAL > 1200;.
② SELECT * FROM EMP
WHERE JOB = 'ANALYST' OR JOB = 'CLERK' AND SAL > 1200;
③ SELECT * FROM EMP
WHERE (JOB = 'ANALYST' AND SAL > 1200) OR (JOB = 'CLERK' AND SAL > 1200);
④ SELECT * FROM EMP
WHERE (JOB = 'ANALYST' OR JOB = 'CLERK') AND SAL > 1200;
해설해보기
#IN
IN()은 괄호 안에 들어간 값 중 하나만 포함되면 출력되는 것 이므로
OR 연산자와 같은 역할을함.
또한 함수는 연산자보다 우선순위가 높기 때문에 AND연산자 보다 우선 실행됨
따라서 아래의 우선순위에 따라 정답은 1,4번이다.
#연산자 우선순위
0. **Function(함수)**
- 연산자보다 우선실행됨
1. **Parentheses (괄호):**
- 괄호로 둘러싼 부분이 가장 높은 우선순위
2. **Exponentiation (^):**
- 거듭제곱 연산자가 그 다음으로 높은 우선순위
3. **Unary Plus (+), Unary Minus (-):**
- 단항 덧셈과 단항 뺄셈
4. **Multiplication (*), Division (/), Modulus (%):**
- 곱셈, 나눗셈, 나머지 연산이 동일한 우선순위
5. **Addition (+), Subtraction (-):**
- 덧셈과 뺄셈이 동일한 우선순위
6. **Concatenation (||):**
- 문자열 연결 연산자는 덧셈과 뺄셈과 동일한 우선순위
7. **Comparison Operators (=, <>, !=, <, <=, >, >=, IS NULL, IS NOT NULL, LIKE, BETWEEN, IN, etc.):**
- 비교 연산자들은 같은 우선순위
8. **Logical Operators (NOT, AND, OR):**
- 1) NOT : NOT 연산자가 가장 높은 우선순위
- 2) AND : AND 연산자는 NOT 다음으로 높은 우선순위
- 3) OR : OR 연산자는 AND 다음으로 높은 우선순위
9. **Assignment Operator (=):**
- 할당 연산자는 가장 낮은 우선순위
실행 해보기
관련 스크립트
- 관련 스크립트 -
alter session set nls_Date_format='RR/MM/DD';
drop table emp;
drop table dept;
CREATE TABLE DEPT
(DEPTNO number(10),
DNAME VARCHAR2(14),
LOC VARCHAR2(13) );
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
CREATE TABLE EMP (
EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4) ,
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) );
INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,'81-11-17',5000,NULL,10);
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,'81-05-01',2850,NULL,30);
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,'81-05-09',2450,NULL,10);
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,'81-04-01',2975,NULL,20);
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,'81-09-10',1250,1400,30);
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,'81-02-11',1600,300,30);
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,'81-08-21',1500,0,30);
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,'81-12-11',950,NULL,30);
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,'81-02-23',1250,500,30);
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,'81-12-11',3000,NULL,20);
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,'80-12-09',800,NULL,20);
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,'82-12-22',3000,NULL,20);
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,'83-01-15',1100,NULL,20);
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,'82-01-11',1300,NULL,10);
commit;
반응형
'SQL 문제 풀기 > 2. SQLD 기출 : 2024.3.01~2024.4.25' 카테고리의 다른 글
<SQLD 6> 문자 함수 SUBSTR에 대한 기출문제 (0) | 2024.03.06 |
---|---|
<SQLD 5> is null 연산자를 사용법에 대한 기출문제 (2) | 2024.03.06 |
<SQLD 4> between .. and 연산자를 사용법에 대한 기출문제 (0) | 2024.03.04 |
<SQLD 2> like 연산자를 사용법에 대한 기출문제2 (0) | 2024.03.02 |
<SQLD 1> like 연산자를 사용법에 대한 기출문제 1 (0) | 2024.03.01 |