ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 300820
    SQL 2020. 8. 29. 22:01

    자체적 연습 문제

     

    1) 근무지가 "NEW YORK"이 아닌 사원들의 사원 번호, 사원 이름, 매니저 이름을 나타내시오.

     

    select e.empno, e.ename, (select ename 
                                from emp
                                where e.mgr = empno), d.loc
        from emp e, dept d
        where d.loc ^= 'NEW YORK'
        and e.deptno = d.deptno
        ;
    

     

    2) Manager와 Analyst의 평균 연봉과 President와 Clerk의 평균 연봉을 나타내시오.

    select (select avg(sal)
            from emp
            where job in ('MANAGER', 'ANALYST')
            ) AS "M와 A 평균 연봉", (select avg(sal)
                                    from emp
                                    where job in ('PRESIDENT', 'CLERK') 
                                    )AS "P와 C 평균 연봉"
        from emp
        group by 0 -- 테이블 크기를 줄이고 싶은데,,, 필요한 건 딱 2개니까 -- 그냥 숫자 넣으면 1개만 출력되네,, 왜?
        ;

     

    3) 상여금을 받지 않는 직원들의 사원 번호, 이름, 담당 업무, 평균 연봉을 나타내시오. (평균 연봉은 월급*12 + 상여금)

    select empno, ename, job, 12*sal
    from emp
    where comm IS NULL
    ;

     

    4) 가장 빨리 입사한 직원과 가장 늦게 입사한 직원의 연봉 평균을 나타내시오.

     

    5) 근무지가 같은 사원들의 연봉 평균을 나타내시오.

    select d.loc, avg(e.sal)
    from dept d, emp e
    where d.deptno = e.deptno
    group by d.loc
    ;

     

    6) 이름에 A가 들어가는 직원과 E가 들어가는 직원의 급여 평균을 비교하여 그 결과를 맨 우측에 나타내시오. (=, >, <)

     

    select (select trunc(avg(sal))
            from emp
            where ename like '%A%') as A, (select trunc(avg(sal))
                                        from emp
                                        where ename like '%E%') as B, case 
                                                                            when (select avg(sal)
            from emp
            where ename like '%A%') > (select avg(sal)
                                        from emp
                                        where ename like '%E%')
                                                                            then '>'
                                                                            when (select avg(sal)
                                        from emp
                                        where ename like '%E%') > (select avg(sal)
            from emp
            where ename like '%A%')
                                                                            then '<'
                                                                             else '='
                                                                            end
                                                                            as Result
    from emp
    group by 1
    ;

    너무 못한 것 같아. case문 수정할 방법을 생각해야될 것 같아.

    'SQL' 카테고리의 다른 글

    010920  (0) 2020.09.01
    310820  (0) 2020.08.31
    280820  (2) 2020.08.28
    270820  (2) 2020.08.27
    270820 - 쪽지 시험  (0) 2020.08.27

    댓글

Designed by Tistory.