관리 메뉴

거니의 velog

230712 SQL 강의 본문

대덕인재개발원_Oracle DB

230712 SQL 강의

Unlimited00 2023. 7. 14. 17:35
-- <과제> 각 테이블에 데이터 10개 이상 입력하기

INSERT INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
VALUES ('1001', '김기훈', '대전광역시 서구 둔산로 31번길 31', '010-1234-5671', '대리', '영업부');
INSERT INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
VALUES ('1002', '홍성범', '대전광역시 서구 갈마로123 ', '010-2234-5672', '차장', '총무부');
INSERT INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
VALUES ('1003', '강나미', '대전광역시 중구 계룡로 389', '010-3235-5673', '사원', '인사부');
INSERT INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
VALUES ('1004', '민병철', '대전광역시 북구 신탄진로100', '010-4233-5674', '팀장', '개발부');
INSERT INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
VALUES ('1005', '장승석', '대전광역시 동구 산내로1283', '010-5238-5675', '과장', '생산부');
INSERT INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
VALUES ('1006', '곽희준', '대전광역시 서구 갈마로240', '010-6234-5676', '부장', '생산부');
INSERT INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
VALUES ('1007', '김동준', '대전광역시 동구 산내로198', '010-7234-5677', '대리', '인사부');
INSERT INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
VALUES ('1008', '문재인', '대전광역시 중구 계룡로 59', '010-8235-5678', '사원', '영업부');
INSERT INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
VALUES ('1009', '윤석열', '대전광역시 서구 계백로100', '010-9284-5679', '팀장', '총무부');
INSERT INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
VALUES ('1010', '최현우', '대전광역시 중구 계룡로 389', '010-8795-7778', '대리', '개발부');

INSERT ALL
      INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
      VALUES ('E001', '강서주', '세종시 다정남로 22', '010-8317-9503', '사원', '건설과') -- 기준점
      INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
      VALUES ('E002', '임석일', '대전시 중구 계룡로 110', '010-4564-1546', '주임', '토목과')
      INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
      VALUES ('E003', '곽재우', '세종시 집현중앙로 17', '010-1115-9546', '대리', '플랜트과')
      INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
      VALUES ('E004', '이미지', '대전시 서구 관저북로 20', '010-6875-4563', '과장', '경영관리과')
      INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
      VALUES ('E005', '김수지', '대전시 동구 동서대로 1638번길', '010-4555-4785', '차장', '플랜트과')
      INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
      VALUES ('E006', '윤하늘', '대전시 가양남로 33번길', '010-6464-9243', '부장', '토목과')
      INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
      VALUES ('E007', '조수인', '대전시 동대전로 171', '010-2347-5526', '이사', '경영관리과')
      INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
      VALUES ('E008', '임민우', '대전시 우암로 139', '010-7767-9566', '사원', '건설과')
      INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
      VALUES ('E009', '강서준', '대전시 대학로 62', '010-2346-6455', '주임', '플랜트과')
      INTO EMPLOYEE (E_EMPNO, E_NAME, E_ADDRESS, E_TELNO, E_POSITION, E_DEPARTMENT)
      VALUES ('E010', '이경민', '세종시 새롬중앙로 18', '010-5656-3453', '대리', '건설과')
    SELECT *
      FROM DUAL;
      
SELECT * FROM EMPLOYEE;

DELETE FROM EMPLOYEE;

SELECT * FROM EMPLOYEE;


INSERT INTO BUSINESS(B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
    VALUES('BS0001', '대전남부아파트사업장', '대전 동구 산내로1200', '1588-0000', 10000000, 128, '2022-01-01', '2024-01-06',NULL, '엥');
INSERT INTO BUSINESS(B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
    VALUES('BS0002', '대전유성사업장', '대전 유성 유성대로70', '1668-0001', 200000, 256, '2022-02-02', '2024-02-06', NULL, '응');
INSERT INTO BUSINESS(B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
    VALUES('BS0003', '대전서구사업장', '대전 서구 서구대로22', '2580-2580', 3000000, 32, '2022-03-03', '2024-03-06', NULL, '윽');
INSERT INTO BUSINESS(B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
    VALUES('BS0004', '대전동구사업장', '대전 동구 동구대로36', '1234-1234', 4000000, 64, '2022-04-04', '2024-04-06',NULL, '헐');
INSERT INTO BUSINESS(B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
    VALUES('BS0005', '대전중구사업장', '대전 중구 중구대로20', '4567-4567', 5555000, 16, '2022-05-05', '2024-05-06',NULL, '헉');
INSERT INTO BUSINESS(B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
    VALUES('BS0006', '대전북구사업장', '대전 북구 북구대로345', '7894-7894', 6666000, 8, '2022-06-06', '2024-06-06', '2025-04-30', '비');

INSERT ALL
      INTO BUSINESS (B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
      VALUES ('B00001', '세종시아파트건설', '세종시 다정남로 22', '010-8317-9503', 1200000000, 5, TO_DATE(20230702, 'yyyy/mm/dd'), TO_DATE(20240831, 'yyyy/mm/dd'), null, null) -- 기준점
      INTO BUSINESS (B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
      VALUES ('B00002', '토광건설(주)사업', '대전시 중구 계룡로 110', '010-4564-1546', 2300000000, 7, TO_DATE(20230802, 'yyyy/mm/dd'), TO_DATE(20240930, 'yyyy/mm/dd'), null, null)
      INTO BUSINESS (B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
      VALUES ('B00003', '영만종합건설사업', '세종시 집현중앙로 17', '010-1115-9546', 900000000, 9, TO_DATE(20230902, 'yyyy/mm/dd'), TO_DATE(20241031, 'yyyy/mm/dd'), TO_DATE(20241031, 'yyyy/mm/dd'), null)
      INTO BUSINESS (B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
      VALUES ('B00004', '대명종합건설사업', '대전시 서구 관저북로 20', '010-6875-4563', 4800000000, 10, TO_DATE(20231002, 'yyyy/mm/dd'), TO_DATE(20241130, 'yyyy/mm/dd'), null, null)
      INTO BUSINESS (B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
      VALUES ('B00005', '영동종합이엔시사업', '대전시 동구 동서대로 1638번길', '010-4555-4785', 500000000, 6, TO_DATE(20231102, 'yyyy/mm/dd'), TO_DATE(20241231, 'yyyy/mm/dd'), null, null)
      INTO BUSINESS (B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
      VALUES ('B00006', '동우건설(주)사업', '대전시 가양남로 33번길', '010-6464-9243', 7000000000, 5, TO_DATE(20231202, 'yyyy/mm/dd'), TO_DATE(20250131, 'yyyy/mm/dd'), TO_DATE(20250131, 'yyyy/mm/dd'), null)
      INTO BUSINESS (B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
      VALUES ('B00007', '은성건설(주)사업', '대전시 동대전로 171', '010-2347-5526', 400000000, 4, TO_DATE(20240102, 'yyyy/mm/dd'), TO_DATE(20250331, 'yyyy/mm/dd'), null, null)
      INTO BUSINESS (B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
      VALUES ('B00008', '(유)유백건설사업', '대전시 우암로 139', '010-7767-9566', 5500000000, 5, TO_DATE(20240202, 'yyyy/mm/dd'), TO_DATE(20250430, 'yyyy/mm/dd'), null, null)
      INTO BUSINESS (B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
      VALUES ('B00009', '일화종합건설아파트', '대전시 대학로 62', '010-2346-6455', 1800000000, 8, TO_DATE(20240302, 'yyyy/mm/dd'), TO_DATE(20250531, 'yyyy/mm/dd'), TO_DATE(20250531, 'yyyy/mm/dd'), null)
      INTO BUSINESS (B_SITENO, B_SITENAME, B_ADDRESS, B_TELNO, B_AMOUNT, B_MANQTY, B_SDATE, B_PEDATE, B_EDATE, B_REMARK)
      VALUES ('B00010', '태백건설(주)아파트', '세종시 새롬중앙로 18', '010-5656-3453', 9600000000, 5, TO_DATE(20240402, 'yyyy/mm/dd'), TO_DATE(20250630, 'yyyy/mm/dd'), null, null)
    SELECT *
      FROM DUAL;

SELECT * FROM BUSINESS;

DELETE FROM BUSINESS;

SELECT * FROM BUSINESS;


INSERT ALL
      INTO WORK (E_EMPNO, B_SITENO, W_SDATE, W_EDATE, W_SCORE)
      VALUES ('E001', 'B00001', TO_DATE(20230702, 'yyyy/mm/dd'), TO_DATE(20240831, 'yyyy/mm/dd'), 79) -- 기준점
      INTO WORK (E_EMPNO, B_SITENO, W_SDATE, W_EDATE, W_SCORE)
      VALUES ('E002', 'B00002', TO_DATE(20230802, 'yyyy/mm/dd'), TO_DATE(20240930, 'yyyy/mm/dd'), 94)
      INTO WORK (E_EMPNO, B_SITENO, W_SDATE, W_EDATE, W_SCORE)
      VALUES ('E003', 'B00003', TO_DATE(20230902, 'yyyy/mm/dd'), TO_DATE(20241031, 'yyyy/mm/dd'), 82)
      INTO WORK (E_EMPNO, B_SITENO, W_SDATE, W_EDATE, W_SCORE)
      VALUES ('E004', 'B00004', TO_DATE(20231002, 'yyyy/mm/dd'), TO_DATE(20241130, 'yyyy/mm/dd'), 67)
      INTO WORK (E_EMPNO, B_SITENO, W_SDATE, W_EDATE, W_SCORE)
      VALUES ('E005', 'B00005', TO_DATE(20231102, 'yyyy/mm/dd'), TO_DATE(20241231, 'yyyy/mm/dd'), 100)
      INTO WORK (E_EMPNO, B_SITENO, W_SDATE, W_EDATE, W_SCORE)
      VALUES ('E006', 'B00006', TO_DATE(20231202, 'yyyy/mm/dd'), TO_DATE(20250131, 'yyyy/mm/dd'), 88)
      INTO WORK (E_EMPNO, B_SITENO, W_SDATE, W_EDATE, W_SCORE)
      VALUES ('E007', 'B00007', TO_DATE(20240102, 'yyyy/mm/dd'), TO_DATE(20250331, 'yyyy/mm/dd'), 95)
      INTO WORK (E_EMPNO, B_SITENO, W_SDATE, W_EDATE, W_SCORE)
      VALUES ('E008', 'B00008', TO_DATE(20240202, 'yyyy/mm/dd'), TO_DATE(20250430, 'yyyy/mm/dd'), 83)
      INTO WORK (E_EMPNO, B_SITENO, W_SDATE, W_EDATE, W_SCORE)
      VALUES ('E009', 'B00009', TO_DATE(20240302, 'yyyy/mm/dd'), TO_DATE(20250531, 'yyyy/mm/dd'), 74)
      INTO WORK (E_EMPNO, B_SITENO, W_SDATE, W_EDATE, W_SCORE)
      VALUES ('E010', 'B00010', TO_DATE(20240402, 'yyyy/mm/dd'), TO_DATE(20250630, 'yyyy/mm/dd'), 69)
    SELECT *
      FROM DUAL;

SELECT * FROM WORK;

DELETE FROM WORK;

SELECT * FROM WORK;


INSERT INTO ITEM(I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
VALUES ('100001','나사',34,1550,SYSDATE,'B00001');
INSERT INTO ITEM(I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
VALUES ('100002','볼트',500,1550,SYSDATE,'B00002');
INSERT INTO ITEM(I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
VALUES ('100003','망치',5,1550,SYSDATE,'B00003');
INSERT INTO ITEM(I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
VALUES ('100004','너트',600,1550,SYSDATE,'B00009');
INSERT INTO ITEM(I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
VALUES ('100005','U볼트',4,1550,SYSDATE,'B00003');
INSERT INTO ITEM(I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
VALUES ('100006','U밴드',14,1550,SYSDATE,'B00004');
INSERT INTO ITEM(I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
VALUES ('100007','니퍼',1,1550,SYSDATE,'B00005');
INSERT INTO ITEM(I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
VALUES ('100008','드라이버',34,1550,SYSDATE,'B00006');
INSERT INTO ITEM(I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
VALUES ('100009','테이프',34,1550,SYSDATE,'B00007');
INSERT INTO ITEM(I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
VALUES ('100010','드릴2',39,1550,SYSDATE,'B00008');

INSERT ALL
      INTO ITEM (I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
      VALUES ('ITEM000001', '내장재', 300, 20000000, TO_DATE(20230712, 'yyyy/mm/dd'), 'B00001') -- 기준점
      INTO ITEM (I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
      VALUES ('ITEM000002', '천장재', 200, 30000000, TO_DATE(20230812, 'yyyy/mm/dd'), 'B00002')
      INTO ITEM (I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
      VALUES ('ITEM000003', '지붕재', 450, 40000000, TO_DATE(20230912, 'yyyy/mm/dd'), 'B00003')
      INTO ITEM (I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
      VALUES ('ITEM000004', '단열재', 100, 52000000, TO_DATE(20231012, 'yyyy/mm/dd'), 'B00004')
      INTO ITEM (I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
      VALUES ('ITEM000005', '바닥재', 70, 10000000, TO_DATE(20231112, 'yyyy/mm/dd'), 'B00005')
      INTO ITEM (I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
      VALUES ('ITEM000006', '창호', 520, 25000000, TO_DATE(20231212, 'yyyy/mm/dd'), 'B00006')
      INTO ITEM (I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
      VALUES ('ITEM000007', '관이음쇠', 100, 74000000, TO_DATE(20240112, 'yyyy/mm/dd'), 'B00007')
      INTO ITEM (I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
      VALUES ('ITEM000008', '벽지', 90, 31000000, TO_DATE(20240212, 'yyyy/mm/dd'), 'B00008')
      INTO ITEM (I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
      VALUES ('ITEM000009', '배관', 30, 11000000, TO_DATE(20240312, 'yyyy/mm/dd'), 'B00009')
      INTO ITEM (I_ITEMNO, I_ITEMNAME, I_QTY, I_PRICE, I_IDATE, B_SITENO)
      VALUES ('ITEM000010', '판넬', 500, 20000000, TO_DATE(20240412, 'yyyy/mm/dd'), 'B00010')
    SELECT *
      FROM DUAL;

SELECT * FROM ITEM;

DELETE FROM ITEM;

SELECT * FROM ITEM;


SELECT * FROM EMPLOYEE; -- 사원 테이블
SELECT * FROM BUSINESS; -- 사업장 테이블
SELECT * FROM WORK; -- 근무 테이블
SELECT * FROM ITEM; -- 자재 테이블

-- <문제1> 진행되고 있는 공사의 공사건수와 총공사비용, 총투입인원을 구하시오.
SELECT COUNT(*) AS "공사건수",
       SUM(B_AMOUNT) AS "총공사비용",
       SUM(B_MANQTY) AS "총투입인원"
  FROM BUSINESS
 WHERE B_EDATE IS NULL;

실행 결과


-- <문제2> 공사별 자재별 수량을 구하시오.
SELECT a.B_SITENO AS "공사번호",
       b.B_SITENAME AS "공사명",
       a.I_ITEMNO AS "자재번호",
       a.I_ITEMNAME AS "자재명",
       SUM(a.I_QTY) AS "수량"
  FROM ITEM a, BUSINESS b
 WHERE 1=1
   AND a.B_SITENO = b.B_SITENO
 GROUP BY a.B_SITENO, b.B_SITENAME, a.I_ITEMNO, a.I_ITEMNAME;

실행 결과


-- <문제3> 총자재 현황을 금액이 큰것 순대로 자재번호, 자재명, 수량, 단가, 금액을 구하시오.
SELECT I_ITEMNO AS "자재번호", 
       I_ITEMNAME AS "자재명", 
       I_QTY AS "수량", 
       I_PRICE AS "단가",
       I_QTY * I_PRICE AS "금액"
  FROM ITEM
 ORDER BY I_QTY * I_PRICE DESC;

실행 결과


-- <문제4> 공사가 끝난 사업장중 공사금액이 큰 순서로 사업장번호, 사업장명, 공사금액을 구하시오.
SELECT B_SITENO AS "사업장번호",
       B_SITENAME AS "사업장명",
       B_AMOUNT AS "공사금액"
  FROM BUSINESS
 WHERE B_EDATE IS NOT NULL
 ORDER BY B_AMOUNT DESC;

실행 결과


-- <문제5> 2023년도에 공사현장에 파견된 직원의 사번, 사원명, 파견일자, 사업명을 구하시오.
SELECT a.E_EMPNO AS "사번",
       a.E_NAME AS "사원명",
       b.W_SDATE AS "파견일자",
       c.B_SITENAME AS "사업명"
  FROM EMPLOYEE a, WORK b, BUSINESS c
 WHERE 1=1
   AND a.E_EMPNO = b.E_EMPNO
   AND b.B_SITENO = c.B_SITENO
   AND SUBSTR(b.W_SDATE, 1, 2)='23';

실행 결과

 

'대덕인재개발원_Oracle DB' 카테고리의 다른 글

230714 SQL 강의  (1) 2023.07.17
230713 SQL 강의  (0) 2023.07.17
230711 SQL 강의  (0) 2023.07.13
230706 SQL 강의  (0) 2023.07.13
230705 SQL 강의  (0) 2023.07.12