2022.04.21 - [IT/SQLP] - SQLP 기출문제 2편
Q. 다음 중 아래 t_idx 인덱스가 해당하는 것으로 가장 적절한 것은?
create table t ( a number, b char(3), c varchar2(10) )
partition by range(a) (
partition p1 values less than(100)
, partition p2 values less than(200)
, partition p3 values less than(maxvalue)
);
create index t_idx on t( b ) local ;
------------------------------------------------------------------------------------------------------
① Global Prefixed Partition Index ③ Local Prefixed Partition Index
② Global NonPrefixed Partition Index ④ Local NonPrefixed Partition Index
Q. 다음 중 아래 데이터 현황을 참고하여 결과가 다르게 나오는 쿼리인 것은?
select EmployeeID, LastName, HireDate, Country
from Employees
order by HireDate
① select EmployeeID, LastName, HireDate, Country
from (select EmployeeID, LastName, HireDate, Country
, rank () over (order by HireDate) as rnum
from Employees
) a
where a.rnum <= 5
order by EmployeeID
② select EmployeeID, LastName, HireDate, Country
from (select EmployeeID, LastName, HireDate, Country
, row_number() over (order by HireDate) as rnum
from Employees
) a
where a.rnum <= 5
order by EmployeeID
③ select EmployeeID, LastName, HireDate, Country
from Employees a
where HireDate in (select top 5 HireDate
from Employees
order by HireDate )
order by EmployeeID
④ select EmployeeID, LastName, HireDate, Country
from (select EmployeeID, LastName, HireDate, Country
, dense_rank() over (order by HireDate) as rnum
from Employees
) a
where a.rnum <= 5
order by EmployeeID
Q. 아래 NVL 함수와 ISNULL 함수를 사용한 SQL 문장은 벤더 공통적으로 CASE 문장으로 표현할 수 있다. 아래 CASE SQL 문장의 ㉠안에 들어갈 내용을 작성하시오.
[Oracle 사례]
SELECT PLAYER_NAME 선수명, POSITION, NVL(POSITION,'없음') 포지션
FROM PLAYER
WHERE TEAM_ID = 'K08'
[SQL Server 사례]
SELECT PLAYER_NAME 선수명, POSITION, ISNULL(POSITION,'없음') 포지션
FROM PLAYER
WHERE TEAM_ID = 'K08'
[CASE 문장 사례]
SELECT PLAYER_NAME 선수명, POSITION,
CASE WHEN ( ㉠ )
THEN '없음'
ELSE POSITION
END AS 포지션
FROM PLAYER
WHERE TEAM_ID = 'K08'
Q. 다음 중 아래 두 SQL에 대한 설명으로 가장 적절한 것은?
(단, 국가는 100건, 수출실적은 100만 건. 국가 테이블 PK는 국가코드이다.)
가. SELECT DISTINCT 국가명
FROM 국가 x, 수출실적 y
WHERE x.국가코드= y.국가코드
AND y.수출년월 BETWEEN '200001' AND '201012';
나. SELECT 국가명
FROM 국가 x
WHERE EXISTS (SELECT 1
FROM 수출실적 y
WHERE y.국가코드= x.국가코드
AND y.수출년월 BETWEEN '200001' AND '201012');
------------------------------------------------------------------------------------------------------
① ‘가’ SQL은 부분범위 처리가 가능하다.
② ‘나’ SQL이 더 효율적이다.
③ OLTP 환경이냐, DW 환경이냐에 따라 두 SQL의 효율성이 다르다.
④ 두 SQL의 결과가 다르므로 효율성을 판단하는 것은 의미가 없다.
'IT > SQLP' 카테고리의 다른 글
[SQL 기초강의] 4강. WHERE (0) | 2022.04.25 |
---|---|
[SQL 기초강의] 3강. NULL, DISTINCT (0) | 2022.04.22 |
SQLP 기출문제 2편 (0) | 2022.04.21 |
SQLP 기출문제 (0) | 2022.04.21 |
[SQL 기초강의] 2강. SELECT (3) | 2022.04.14 |
댓글