SQL 연습

yeong-min·2023년 6월 25일
0

※ emp, dept 테이블에 대해 다음의 질의를 해결하기 위한 SELECT 문을 작성

  1. BOSTON 에 있는 부서의 이름은 무엇인가
    Select dname
    from dept
    where loc='BOSTON';

  2. 부서번호가 10 인 사원의 이름과 입사일자를 보이시오
    Select ename, hiredate
    from emp
    where deptno=10;

  3. 담당업무가 ANALYST 인 사원들의 모든 정보를 보이시오
    Select *
    from emp
    where job='ANALYST';

  4. 입사일자가 1981 년 1 월 ~ 6 월이 아닌 사원의 이름, 입사일자를 보이시오
    Select ename, hiredate
    From emp
    Where hiredate not between ‘1981-01-01’ and ‘1981-07-01’;

  5. 사장의 이름을 보이시오 (힌트: 사장의 담당업무는 PRESIDENT 이다)
    Select ename
    from emp
    where job='PRESIDENT';

  6. 연봉이 3000 에서 4000 사이이거나 담당업무가 CLERK 인 사원의 이름, 연봉을 보
    이시오
    Select ename, sal
    from emp
    where (sal>=3000 and sal<=4000) or job=’CLERK’;

  7. 담당 업무가 ANALYST, CLERK, MANAGER 중의 하나인 사원의 이름, 담당업무,
    급여를 보이시오 (단 IN 또는 NOT IN 을 사용하시오)
    Select ename, job, sal
    from emp
    where job in (‘ANALYST’,’CLERK’,’MANAGER’);

  8. 담당 업무명에 'NA'를 포함하는 사원의 이름, 담당업무를 보이시오
    Select ename, job
    from emp
    where job LIKE ‘%NA%’;

  9. 담당 업무가 MANAGER 인 사원은 몇 명인지 보이시오
    Select count(*)
    from emp
    where job=’MANAGER’ ;

  10. 10 번 부서에 근무하는 사원중 급여를 가장 많이 받는 사원의 급여를 보이시오
    Select max(sal)
    from emp
    where deptno=10;

  11. 담당업무가 SALESMAN 이거나 30 번 부서에 근무하는 사원의 급여액 합계를 보이
    시오
    Select sum(sal)
    from emp
    where job=’SALESMAN’ or deptno=30;

  12. 입사일이 1981 년 9 월 1 일 이후인 사원의 평균 연봉을 보이시오
    Select avg(sal)
    from emp
    where hiredate>=’1981-09-01’;

  13. 담당 업무가 SALESMAN 인 시원들의 급여를 20% 인상하기 위해서는 현재보다 얼
    마의 비용이 더 필요한가를 보이시오.
    Select sum(sal)*0.2
    from emp
    where job=’SALESMAN’;

  14. 모든 사원의 이름과 업무, 급여를 급여액 내림차순으로 보이시오
    Select ename,job,sal
    from emp
    order by sal desc;

  15. 급여가 1500 이상이고 담당업무가 MANAGER 인 사원의 사원번호, 이름, 급여를
    이름 알파벳순으로 보이시오
    Select empno, ename, sal
    from emp
    where sal>=1500 and job=’MANAGER’
    order by ename;

  16. 부서별 평균 연봉을 보이되 많은연봉 우선으로 보이시오
    Select deptno, avg(sal)
    from emp
    group by deptno
    order by avg(sal) desc;

  17. 모든 사원의 정보를 담당업무에 대해 오름차순으로, 그리고 같은 업무내에서는 연
    봉내림차순으로 정렬하여보이시오
    Select *
    from emp
    order by job, sal desc;

  18. 각 담당 업무별로 최고 연봉과 최저 연봉을 보이시오
    select job, max(sal) as Max,min(sal) as min
    from emp
    group by job;

  19. 각 부서별 부서번호, 사원 수, 연봉합계를 보이시오
    select deptno, count(*), sum(sal)
    from emp
    group by deptno;

  20. 부서번호 , 부서별 사원 수, 연봉 합계를 보이되 급여합계가 9000~10000 사이인
    경우만 보이시오 . 단, 입사일자가 1981-01-01 이전 사원은 제외하고, 연봉합계가 많
    은 순으로 출력하시오
    select deptno, count(*),sum(sal)
    from emp
    where hiredate>='1981-01-01'
    group by deptno
    having sum(sal)>=9000 and sum(sal)<=10000
    order by sum(sal) desc;
    ※ city, country, countrylanguage 테이블에 대해 다음의 질의를 해결하기 위한
    SELECT 문을 작성하시오. SQL Developer 를 이용하여 SQL 을 실행하고 결과를 확인
    해 보시오.

  21. 폴란드(PolAND) 국민의 인구와 기대수명을 보이시오
    Select population, lifeexpectancy
    from country
    where name=’Poland’;

  22. 체코에서 사용하는 언어와 사용 비율을 보이시오. (체코의 국가코드는 CZE 이다)
    Select language, percentage
    from countrylanguage
    where countrycode=’CZE’;

  23. 런던(London)의 인구수를 보이시오
    Select population
    from city
    where name=’London’;

  24. 면적이 40,000 이상이고 인구가 3,000,000 이상인 국가의 이름과 면적, 인구수를
    보이시오
    Select name, surfacearea, population
    from country
    where surfacearea>=40000 and population >=3000000;

  25. GNP 가 100,000 ~ 200,000 사이가 아닌 국가의 이름과 GNP 를 보이시오
    Select name, GNP
    from country
    where not (GNP>=100000 and GNP <=200000);

  26. 국가명이 A 또는 B 로 시작하는 국가의 이름을 알파벳 역순으로 보이시오
    Select name
    from country
    where name like ’A%’ or name like ‘B%’
    order by name desc

  27. 인구가 천만 이상인 국가는 몇 개인를 보이시오
    Select count(*)
    from country
    where population>=10000000;

  28. 기대수명이 70 이하인 국가의 GNP 최대값을 보이시오
    Select max(GNP)
    from country
    where lifeexpectancy<=70;

  29. 면적이 30,000 이상인 국가들에 대해 가장 높은 GNP 와 가장 낮은 GNP 의 차이를
    보이시오
    Select max(GNP) - min(GNP)
    from country
    where surfacearea>=30000;

  30. 면적이 30000 이상인 국가의 국가명, 1 인당 국민생산액(GNP÷인구수)을 보이시오
    Select name, GNP/population
    from country
    where surfacearea>=30000;

  31. 인구밀도가 가장 높은 국가의 단위면적당 인구수를 보이시오 (면적이 0 으로 작성
    된 국가가 있으므로 면적이 0 보다 큰 국가를 대상으로 계산한다. )
    select max(population/surfacearea)
    from country
    where surfacearea>0;

  32. 사용하는 언어수의 수가 3 개 이상인 국가의 국가코드, 사용하는 언어의 수 합계를
    보이시되 언어수 내림차순으로 보이시오
    select countrycode, count()
    from countrylanguage
    group by countrycode
    having count(
    )>=3
    order by count(*) desc;

  33. 사용하는 언어수의 수가 4 개 이상인 국가의 국가코드, 사용하는 언어의 수 합계를
    보이시되 언어수 내림차순으로 보이시오. 언어사용 비율이 5% 미만인 언어는 계산에서
    제외하시오
    select countrycode, count()
    from countrylanguage
    where percentage>=0.05
    group by countrycode
    having count(
    )>=4
    order by count(*) desc;

  34. 도시의 수가 2 개 이상인 국가에 대해서 국가코드, 국가의 도시수, 도시인구합계를
    보이시오
    select countrycode, count(),sum(population)
    from city
    group by countrycode
    having count(
    )>=2;

  35. 국가코드, 평균 도시인구 수를 보이되 국가코드 알파벳 순으로 보이시오
    select countrycode, avg(population)
    from city
    group by countrycode
    order by countrycode;

0개의 댓글