반응형
1. 개요
- 실전에서 자주 사용되는 유용한 SQL 예제 30개를 선별해 보았다.
- 앞에서 포스팅한 30개를 작성하였다.
- https://arckwon.tistory.com/entry/SQL-%EC%BF%BC%EB%A6%AC%EB%AC%B8-%EC%98%88%EC%A0%9C%EB%AA%A8%EC%9D%8C-30%EA%B0%9C-%EB%B0%8F-%EC%BF%BC%EB%A6%AC%EB%8F%84%EA%B5%AC-%EC%B6%94%EC%B2%9C
- 추가적으로 30개를 포스팅한다.
2. 쿼리문 예제 30선
- 아래 SQL을 참고하자.
31. 문제) 부서번호로 ASCENDING SORT한 후 급여가 많은 사람 순으로 출력하라.
SELECT * FROM EMP ORDER BY DEPTNO ASC , SAL DESC;
32. 문제) 부서번호가 DESCENDING SORT하고, 이름 순으로 ASCENDING SORT,급여 순으로 DESCENDING SORT 하라.
SELECT * FROM EMP ORDER BY DEPTNO DESC , ENAME ASC , SAL DESC;
33. 문제) EMP Table에서 이름, 급여, 커미션 금액, 총액(sal + comm)을 구하여 총액이 많은 순서로 출력하라.
단, 커미션이 NULL인 사람은 제외한다.
SELECT ENAME , SAL , COMM , (SAL + COMM) FROM EMP WHERE COMM IS NOT NULL ORDER BY (SAL + COMM) DESC;
34. 문제) 10번 부서의 모든 사람들이게 급여의 13%를 보너스로 지불하기로 하였다. 이름, 급여, 보너스 금액, 부서번호를 출력하라.
SELECT ENAME , (SAL*0.13 + SAL) , COMM , DEPTNO FROM EMP WHERE DEPTNO = 10;
35. 문제) 30번 부서의 연봉을 계산하여 이름, 부서번호, 급여, 연봉을 출력하라. 단, 연말에 급여의 150%를 보너스로 지급한다.
SELECT ENAME , DEPTNO , SAL , (SAL/12*1.5+SAL) FROM EMP WHERE DEPTNO = 30;
36. 문제 ) 부서번호가 20인 부서의 시간당 임금을 계산하여 출력하라.
단, 1달의 근무일수는 12일이고, 1일 근무시간은 5시간이다.
출력양식은 이름, 급여, 시간당 임금(소수이하 첫 번째 자리에서 반올림)을 출력하라
SELECT ENAME, SAL "연봉", ROUND(((SAL/12/12)/5),0) "시급" FROM EMP WHERE DEPTNO = 20;
36. 문제) 급여가 $1,500부터 $3,000 사이의 사람은 급여의 15%를 회비로 지불하기로 하였다. 이를 이름, 급여, 회비(소수점 두 자리에서
반올림)를 출력하라.
SELECT ENAME , SAL , ROUND(SAL*0.15,1) FROM EMP WHERE SAL >=1500 AND SAL < =3000;
37. 문제) 급여가 $2,000 이상인 모든 사람은 급여의 15%를 경조비로 내기로 하였다. 이름, 급여, 커미션(소수점 이하 절삭)를 출력하라.
SELECT ENAME, SAL, COMM ,TRUNC(SAL * 0.15, 0)FROM EMP WHERE SAL >= 2000;
38. 문제) 입사일부터 지금까지의 날짜수를 출력하라. 부서번호, 이름, 입사일, 현재일, 근무일수(소수점 이하 절삭), 근무년수, 근무월수
(30일 기준), 근무주수를 출력하라.
SELECT DEPTNO, ENAME, HIREDATE, SYSDATE,
TRUNC(SYSDATE-HIREDATE) 근무일,
TRUNC((SYSDATE-HIREDATE) / 365) 근무년,
TRUNC((SYSDATE-HIREDATE) / 30) 근무월,
TRUNC((SYSDATE-HIREDATE) / 7) 근무주
FROM EMP;
39. 문제) 모든 사원의 실수령액을 계산하여 출력하라. 단, 급여가 많은 순으로 이름, 급여, 실수령액을 출력하라.(실수령액은 금여에
대해 10%의 세금을 뺀 금액)
SELECT ENAME, SAL, (SAL - (SAL*0.10)) "실수령" FROM EMP ORDER BY SAL DESC;
40. 문제) 입사일로부터 90일이 지난 후의 사원이름, 입사일, 90일 후의 날, 급여를 출력하라.
SELECT ENAME , HIREDATE , HIREDATE+90 "90일후" , SAL FROM EMP;
41. 문제) 입사일로부터 6개월이 지난 후의 입사일, 6개월 후의 날짜, 급여를 출력하라
SELECT HIREDATE , HIREDATE+180 "입사+6개월", SYSDATE+180 "현재+6개월", SAL FROM EMP;
42. 문제) 입사한 달의 근무일수를 계산하여 부서번호, 이름, 근무일수를 출력하라.
SELECT DEPTNO, ENAME, LAST_DAY(HIREDATE) - HIREDATE "입사달근무일수" FROM EMP;
43. 문제) 모든 사원의 60일이 지난 후의 ‘MONDAY’는 몇 년, 몇 월, 몇 일 인가를 구하여 이름, 입사일,’MONDAY’를 출력하라
SELECT ENAME, HIREDATE, NEXT_DAY(HIREDATE+60, '월요일') FROM EMP;
44. 문제) 입사일로부터 오늘까지의 일수를 구하여 이름, 입사일, 근무일수를 출력하라.
SELECT ENAME, HIREDATE, (SYSDATE - HIREDATE) FROM EMP;
45. 문제) 입사일을 ‘1996년 5월 14일’의 형태로 이름, 입사일을 출력하라.
SELECT TO_CHAR(HIREDATE,'YY"년"MM"월"DD"일"') FROM EMP;
46. 문제) 이름의 글자수가 6자 이상인 사람의 이름을 앞에서 3자만 구하여 소문자로 이름만을 출력하라.
SELECT LOWER(SUBSTR(ENAME, 1, 3)) FROM EMP WHERE LENGTH(ENAME) >= 6;
47. 문제) 10번 부서 월급의 평균, 최고, 최저, 인원수를 구하여 출력하라.
SELECT AVG(SAL) , MAX(SAL) , MIN(SAL), COUNT(*) FROM EMP WHERE DEPTNO = 10 GROUP BY DEPTNO;
48. 문제) 각 부서별 급여의 평균, 최고, 최저, 인언수를 구하여 출력하라.
SELECT DEPTNO , AVG(SAL) , MAX(SAL) , MIN(SAL) , COUNT(*) FROM EMP GROUP BY DEPTNO;
49. 문제) 각 부서별 같은 업무를 하는 사람의 인원수를 구하여 부서번호, 업무명, 인원수를 출력하라.
SELECT DEPTNO , JOB , COUNT(*) FROM EMP GROUP BY DEPTNO , JOB;
50. 문제) 같은 업무를 하는 사람의 수가 4명 이상인 업무와 인원수를 출력하라.
SELECT JOB , COUNT(*) FROM EMP GROUP BY JOB HAVING COUNT(*) >= 4;
51. 문제) 각 부서별 평균 월급, 전체 월급, 최고 월급, 최저 월급을 구하여 평균 월급이 많은 순으로 출력하라.
SELECT DEPTNO , AVG(SAL),SUM(SAL),MAX(SAL),MIN(SAL) FROM EMP GROUP BY DEPTNO ORDER BY AVG(SAL) DESC;
52. 문제) EMP와 DEPT Table을 JOIN하여 부서번호, 부서명, 이름, 급여를 출력하라.
SELECT E.DEPTNO , D.DNAME , E.ENAME , E.SAL
FROM EMP E
JOIN DEPT D
ON(E.DEPTNO = D.DEPTNO);
53. 문제) 이름이 ‘ALLEN’인 사원의 부서명을 출력하라.
SELECT E.ENAME , D.DNAME
FROM EMP E
JOIN DEPT D
ON(E.DEPTNO = D.DEPTNO)
WHERE E.ENAME = 'ALLEN';
54. 문제) DEPT Table에 있는 모든 부서를 출력하고, EMP Table에 있는 DATA와 JOIN하여 모든 사원의 이름,
부서번호, 부서명, 급여를 출력하라.
SELECT D.DNAME , E.*
FROM EMP E
JOIN DEPT D
ON(E.DEPTNO = D.DEPTNO);
55. 문제) EMP Table에 있는 EMPNO와 MGR을 이용하여 서로의 관계를 다음과 같이 출력하라.
‘SMTH의 매니저는 FORD이다’
SELECT E1.ENAME || '의 매니저는 ' || E2.ENAME || '이다'
FROM EMP E1 , EMP E2
WHERE E1.ENAME = 'SMITH'AND E1.MGR = E2.EMPNO;
56. 문제) ‘ALLEN:의 직무와 같은 사람의 이름, 부서명, 급여, 직무를 출력하라.
SELECT EMP.ENAME , EMP.SAL , DEPT.DNAME , EMP.JOB
FROM EMP , DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND JOB = (SELECT JOB FROM EMP WHERE ENAME = 'ALLEN');
57. 문제) ‘JONES’가 속해있는 부서의 모든 사람의 사원번호, 이름, 입사일, 급여를 출력하라.
SELECT EMP.EMPNO , EMP.ENAME , EMP.HIREDATE , EMP.SAL
FROM EMP , DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND EMP.DEPTNO = (SELECT EMP.DEPTNO FROM EMP WHERE EMP.ENAME = 'JONES');
58. 문제) 전체 사원의 평균 임금보다 많은 사원의 사원번호, 이름, 부서명, 입사일, 지역, 급여를 출력하라.
SELECT EMP.EMPNO , EMP.ENAME , DEPT.DNAME , EMP.HIREDATE , EMP.SAL
FROM EMP , DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND EMP.SAL > (SELECT AVG(EMP.SAL) FROM EMP);
59. 문제) 10번 부서 사람들 중에서 20번 부서의 사원과 같은 업무를 하는 사원의 사원번호, 이름, 부서명, 입사일, 지역을 출력하라.
SELECT EMP.EMPNO , EMP.ENAME , DEPT.DNAME , EMP.HIREDATE , DEPT.LOC
FROM EMP , DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND EMP.DEPTNO = 10
AND JOB IN (SELECT JOB FROM EMP WHERE DEPTNO = 20);
60. 문제) 10번 부서 중에서 30번 부서에는 없는 업무를 하는 사원의 사원번호, 이름, 부서명, 입사일, 지역을 출력하라.
SELECT EMP.EMPNO , EMP.ENAME , DEPT.DNAME , EMP.HIREDATE , DEPT.LOC
FROM EMP , DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND EMP.DEPTNO = 10
AND JOB NOT IN(SELECT JOB FROM EMP WHERE DEPTNO = 30);
61. 문제) 10번 부서와 같은 일을 하는 사원의 사원번호, 이름, 부서명, 지역, 급여를 급여가 많은 순으로 출력하라.
SELECT EMP.EMPNO , EMP.ENAME , DEPT.DNAME , DEPT.LOC , EMP.SAL , EMP.DEPTNO, EMP.JOB
FROM EMP , DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND JOB IN (SELECT JOB FROM EMP WHERE DEPTNO = 10);
62. 문제) ‘MARTIN’이나 ‘SCOTT의 급여와 같은 사원의 사원번호, 이름, 급여를 출력하라.
SELECT EMP.EMPNO ,EMP.ENAME , EMP.SAL
FROM EMP , DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND SAL IN(SELECT SAL FROM EMP WHERE ENAME ='MARTIN' OR ENAME = 'SCOTT');
63. 문제) 급여가 30번 부서의 최고 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라.
SELECT EMPNO , ENAME , SAL
FROM EMP
WHERE SAL > (SELECT MAX(SAL) FROM EMP WHERE DEPTNO = 30);
64. 문제) 급여가 30번 부서의 최저 급여보다 높은 사원의 사원번호, 이름, 급여를 출력하라.
SELECT EMPNO , ENAME , SAL
FROM EMP
WHERE SAL > (SELECT MIN(SAL) FROM EMP WHERE DEPTNO = 30);
반응형
'개발 > 기타' 카테고리의 다른 글
[jsTree] Spring + jstree 트리예제 (0) | 2023.04.07 |
---|---|
[React] react v18 필수개념 컴포넌트+props 예제 (0) | 2023.04.04 |
[Google Chart] 구글차트 json연동 예제 (x,y축) (0) | 2023.04.04 |
SQL 쿼리문 예제모음 30개 및 쿼리도구 추천 (0) | 2023.03.26 |
c언어 자료구조, 버블정렬 예제모음 (0) | 2023.03.19 |