모든 일상

3일차 예제문제 본문

코딩 공부/SQL

3일차 예제문제

통통푸린 2021. 4. 30. 07:29
728x90
반응형

EX1. 모든 사원의 급여 최고액, 최저액, 총액 및 평균액을 표시합니다. 
      열 레이블을 각각 Maximun, Minimum, Sum 및 Average로 지정하고 결과를 정수로 반올림하는 질의를 작성하시오.

select max(salary) as Maximum, min(salary) as Minimum, sum(salary) as Sum, round(avg(salary)) as Average
from emp;


EX2. 각 직무에 대한 급여 최저액, 최고액, 총액 및 평균액을 표시하도록 한다. 평균은 소숫점 둘째자리까지 표현하시오.

select  job_id, max(salary) as Maximum, min(salary) as Minimum, sum(salary) as Sum, round(avg(salary),2) as Average
from emp
group by job_id
order by 1;

EX3. 직무가 동일한 사원의 수를 표시하는 질의를 작성하시오.

select job_id ,count(job_id)
from emp
group by job_id;


EX4. 관리자 목록 없이 관리자 수만 표시하고 열 레이블을 Number of Managers로 지정합니다.

select count(distinct manager_id) as "Nnumber of Managers"
from emp


EX5. 최고 급여와 최저 급여의 차액을 표시하는 질의를 작성하고 열 레이블을 DIFFERENCE로 지정하시오.

select max(salary), min(salary), max(salary)-min(salary) as DIFFERENCE
from emp;
 

EX6. 관리자 번호 및 해당 관리자에 속한 사원의 최저 급여, 인원수를 표시합니다. 
      관리자를 알 수 없는 사원 및 최저 급여가 $5000 미만인 그룹 제외시키고 급여를 기준으로 출력 결과를 내림차순으로 정렬하시오.

select manager_id, min(salary), count(*)
from emp
where manager_id is not null
group by manager_id
having min(salary) >= 5000
order by 2 desc;


EX7. 부서별 직무별 인원수 및  평균급여를 표시하는 질의를 작성하시오.
        단, 평균 급여를 소수점 둘째 자리에서 반올림하고, 
             부서번호 순으로 정렬하고 부서가 같으면 평균급여가 높은 직무순으로 정렬하시오.

select department_id, job_id, count(*) as headcount, round(avg(salary),1) as avg_salary
from emp
group by department_id, job_id
order by 1, 4 desc;



EX8. 총 사원의 수 및 2002,2003, 2004,2005년에 입사한 사원 수를 표시하는 질의를 작성하고 적합한 열 머리글을 지정합니다.

출력 예 ) 
TOTAL      2002     2003    2004    2005
107       7          6        10       29

sol 1)
select count(*) as TOTAL,
       sum(decode(to_char(hire_date, 'yyyy'), 2003, 1, 0)) as "2003",
       sum(decode(to_char(hire_date, 'yyyy'), 2004, 1, 0)) as "2004",
       sum(decode(to_char(hire_date, 'yyyy'), 2005, 1, 0)) as "2005",
       sum(decode(to_char(hire_date, 'yyyy'), 2006, 1, 0)) as "2006"
from   emp ;

sol 2)
SELECT COUNT(*) AS "TOTAL",
COUNT(CASE WHEN TO_CHAR(HIRE_DATE,'YYYY')='2002' THEN 1 END) AS "2002"
,COUNT(CASE WHEN TO_CHAR(HIRE_DATE,'YYYY')='2003' THEN 1 END) AS "2003"
,COUNT(CASE WHEN TO_CHAR(HIRE_DATE,'YYYY')='2004' THEN 1 END) AS "2004"
,COUNT(CASE WHEN TO_CHAR(HIRE_DATE,'YYYY')='2005' THEN 1 END) AS "2005" 
FROM EMP 

728x90
반응형

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

3일차  (0) 2021.05.03
SQL JOIN 예제문제  (0) 2021.04.30
2일차 예제문제  (0) 2021.04.30
1일차 예제문제  (0) 2021.04.28
2일차  (0) 2021.04.28