공부/SQL

SQL 쪽지시험 오답노트

junani0v0 2024. 4. 4. 14:39

SQL시험문제 오답노트.pdf
0.11MB

 

 

SQL 쪽지시험

1.각 부서별 평균 급여를 구하되 평균 급여가 2000이상인 부서만 나타내는 select문 작성

select dept_id, avg(salary)

from s_emp

group by dept_id

having avg(salary)>=2000;

 

2.각 직책(s_emp.title)별로 급여(s_emp.salary)의 총합을 구하되 직책이 사원인 사람은 제외하시오. , 급여 총합이 3000이상인 직책만 나타내며, 급여총합에 대해 내림차순으로 정렬하시오

 select title, sum(salary)

 from s_emp

 where title != '사원'

 group by title

 having sum(salary) >= 3000

 order by sum(salary) desc;

-- 검산용

 select title, sum(salary) from s_emp group by title;

 

 3.직급(s_emp.title) '부장'(영업부장, 지부장 포함)인 사람이 2명 이하인 부서(s_emp.dept_id)가 몇개인지 나타내는 select문을 작성하시오

3번 아직 모름

 

4.담당직원(s_customer.sales_rep_id)이 배정되지 않은 고객(s_customer.name)을 모두 나타내는 select

--select c2.name

--from s_customer c, s_customer c2

--where s.sales_rep_id = c2.id

--and c2.sales_rep_id = null;

 

select name

from s_customer

where sales_rep_id = 0;

 

select c.name

from s_emp e, s_customer c

where e.id(+) = c.sales_rep_id

and sales_rep_id = 0;

 

select?c.*,e.id,?e.name?담당자이름?

from?s_emp?e,?s_customer?c where?e.id?(+)=?c.sales_rep_id??

and?e.id?is?null;

5.primary key foreign key 아는 대로 적으시오

pk 컬럼이나 컬럼의 조합이 테이블의 각 행을 유일하게 구별시켜 줌, 테이블에 단 하나의 pk허용, null 불가, 테이블이나 컬럼 레벨에서 정의, unique인덱스 자동 생성

fk 컬럼이나 컬럼의 조합이 다른 테이블의 컬럼이나 컬럼의 조합을 참조, fk는 자식 테이블에 정의, 부모 테이블의 값과 일치하거나 null, 테이블 레벨이나 컬럼 레벨에서 정의가능

 

6.constraint의 종류를 모두 적으시오

not null, unique, primary key, foreign key, check

 

7.자동으로 고유한 숫자 값을 생성해주며 주로 기본키 값을 생성하기 위해 사용하는 object?

시퀀스 ( sequence)

 

8.전체 임직원 중에서 연봉이 제일 높은 사람 3명의 이름과 연봉을 출력하는 문장을 작성하시오

select name, salary

from(select*from s_emp order by salary desc)

where rownum <=3;

 

9.인덱스를 생성하는 적절한 경우 모두 고르시오 ( 1,2,3,4)

조건 절(where)이나 조인(join) 조건에서 컬럼을 자주 이용할 때

컬럼이 넓은 범위 값을 가질 때

많은 null값을 갖는 컬럼일 때

테이블의 데이터가 많고 그 테이블에서 조회되는 행의 수가 10~15% 소량검색일 때

 

10.아래 SQL문은 비효율적이다. (s_emp.title에 인덱스가 작성되어 있다고 가정) 이 문장을  not exists를 사용하여 효율적으로 작성하시오

select id, name, title from s_emp e

where title<>'사원';

--select id, name, title

--from s_emp

--where title not exists '사원';

select id, name, title from s_emp e

where not exists(select 'X' from s_emp where e.title like '사원')

--'X'말고 다른거 사용해도 됨

'공부 > SQL' 카테고리의 다른 글

[SQL] 간단 문제 풀기  (0) 2024.04.04