Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

Everything has an expiration date

[Oracle] 20231027 [프로그램소스] - 20231027_01_SCOTT, TBL_INSA(중간 수행평가) 본문

[Oracle]/SQL (Program source)

[Oracle] 20231027 [프로그램소스] - 20231027_01_SCOTT, TBL_INSA(중간 수행평가)

Jelly-fish 2023. 10. 27. 17:53


 20231027_01_SCOTT.sql

SELECT USER
FROM DUAL;
--==>> SCOTT


--○ TBL_EMP 테이블에서 수당(커미션, COMM) 이 가장 많은 사원의
--   사원번호, 사원명, 부서번호, 직종명, 커미션 항목을 조회한다.


-- 중첩서브쿼리의 MAX(COMM) 을 이용한 풀이
SELECT EMPNO "사원번호", ENAME "사원명", DEPTNO "부서번호", JOB "직종명", COMM "커미션"
FROM TBL_EMP
WHERE COMM
      IN      
      (
         SELECT MAX(COMM)
         FROM TBL_EMP
      );
--==>> 7654	MARTIN	30	SALESMAN	    1400
      
      
-- ALL() 을 이용한 풀이
SELECT EMPNO "사원번호", ENAME "사원명", DEPTNO "부서번호", JOB "직종명", COMM "커미션"
FROM TBL_EMP
WHERE COMM >= ALL(SELECT COMM
                  FROM TBL_EMP);
--==>> 조회결과 없음
                  
                  
SELECT EMPNO "사원번호", ENAME "사원명", DEPTNO "부서번호", JOB "직종명", COMM "커미션"
FROM TBL_EMP
WHERE COMM >= ALL(SELECT NVL(COMM, 0)
                  FROM TBL_EMP);
--==>> 7654	MARTIN	30	SALESMAN	    1400

-- NVL() NULL 처리 함수를 사용하지 않으면 결과가 조회되지 않는 것을 확인할 수 있다.
-- 컬럼 안에 NULL 이 하나라도 포함되어 있으면 제대로 ALL() 이 기능하지 않는 것 같다.


-- 서브쿼리 내부에서 NULL 만 처리해 준다면 제대로 동작함을 확인할 수 있다.
SELECT EMPNO "사원번호", ENAME "사원명", DEPTNO "부서번호", JOB "직종명", COMM "커미션"
FROM TBL_EMP
WHERE COMM >= ALL(SELECT COMM
                  FROM TBL_EMP
                  WHERE COMM IS NOT NULL);
--==>> 7654	MARTIN	30	SALESMAN	    1400



SELECT 사원번호, 사원명, 부서번호, 직종명, 커미션
FROM TBL_EMP
WHERE 수당(커미션, COMM)이 가장 많은 사원;

SELECT EMPNO, ENAME, DEPTNO, JOB, COMM
FROM TBL_EMP
WHERE COMM 이 가장 많은 사원;

-- 모든 직원들 중 최고 커미션
SELECT MAX(COMM)
FROM TBL_EMP;
--==>> 1400
-- 집계 함수 MAX() 를 사용함으로써 NULL 값이 자동적으로 제외되었음을 알 수 있다.
-- 집계 함수는 NULL 을 자동으로 제외시킨다. (COUNT, SUM, AVG, ...)


SELECT EMPNO, ENAME, DEPTNO, JOB, COMM
FROM TBL_EMP
WHERE COMM = (모든 직원들 중 최고 커미션);

SELECT EMPNO, ENAME, DEPTNO, JOB, COMM
FROM TBL_EMP
WHERE COMM = (SELECT MAX(COMM)
              FROM TBL_EMP);
              
              
-- MAX() 를 쓰지 않는 풀이

SELECT EMPNO, ENAME, DEPTNO, JOB, COMM
FROM TBL_EMP
WHERE COMM >= ALL (SELECT COMM
                   FROM TBL_EMP);
--==>> 조회 결과 없음
-- 구문이 잘못된 것은 아님...
-- 그런데, MAX()함수를 쓰면 자연스럽게 NULL 을 연산 대상에서 제외시키는데 반해
-- 위와 같이 연산하면 서브쿼리의 COMM 안에 NULL이 들어있다.

/*
[COMM]
(null)
300
500
(null)
1400
(null)
(null)
(null)
(null)
0
(null)
(null)
(null)
(null)
10
10
(null)
(null)
(null)
*/


SELECT EMPNO, ENAME, DEPTNO, JOB, COMM
FROM TBL_EMP
WHERE COMM >= ALL (NULL, 300, 500, NULL, 1400, NULL, NULL, NULL, NULL, 0);
--==>> 조회 결과 없음.



-- NVL() 함수를 사용하여 NULL 을 0으로 변환하자 제대로 조회된다.
SELECT EMPNO, ENAME, DEPTNO, JOB, COMM
FROM TBL_EMP
WHERE COMM >= ALL (SELECT NVL(COMM, 0)
                   FROM TBL_EMP);
--==>> 7654	MARTIN	30	SALESMAN	    1400
                   


SELECT EMPNO, ENAME, DEPTNO, JOB, COMM
FROM TBL_EMP
WHERE COMM >= ALL (SELECT COMM
                   FROM TBL_EMP
                   WHERE COMM IS NOT NULL);
--> COMM이 NULL 이 아닌 집합만을 서브쿼리의 결과 값으로 적용하기 때문에 제대로 조회된다.
   
   

-- NULL 이 제거되면 다음과 같은 형태일 것이다.
SELECT EMPNO, ENAME, DEPTNO, JOB, COMM
FROM TBL_EMP
WHERE COMM >= ALL (300, 500, 1400, 0, 10, 10);
--==>> 7654	MARTIN	30	SALESMAN	1400
                   

SELECT *
FROM TBL_EMP;
                   

--○ DISTINCT() 중복 행(레코드)을 제거하는 함수

-- TBL_EMP 테이블에서 관리자로 등록된 사원의
-- 사원번호, 사원명, 직종명을 조회한다.

-- # 관리자로 등록된 사원의 정보 출력하는 쿼리문
SELECT EMPNO, ENAME, JOB
FROM TBL_EMP
WHERE EMPNO
      IN
      (
        SELECT MGR
        FROM TBL_EMP
      )
ORDER BY EMPNO ASC;
--==>>
/*
7566	JONES	MANAGER
7698	BLAKE	MANAGER
7782	    CLARK	MANAGER
7788	SCOTT	ANALYST
7839	KING	    PRESIDENT
7902	    FORD	    ANALYST
*/      

-- # 관리자 사원번호 추출하는 쿼리문
SELECT MGR
FROM TBL_EMP
WHERE MGR IS NOT NULL
GROUP BY MGR
ORDER BY MGR ASC;
--==>>
/*
7566
7698
7782
7788
7839
7902
*/



SELECT EMPNO, ENAME, JOB
FROM TBL_EMP
WHERE 관리자로 등록된 사원;



SELECT EMPNO, ENAME, JOB
FROM TBL_EMP
WHERE 사원번호 = MGR로 등록된 사원;

SELECT MGR
FROM TBL_EMP;

/*
[MGR]
7902
7698
7698
7839
7698
7839
7839
7566
(null)
7698
7788
7698
7566
7782
7566
7566
7698
7698
7698
*/

SELECT EMPNO, ENAME, JOB
FROM TBL_EMP
WHERE EMPNO IN (7902, 7698, 7698, 7839, 7698, 7839, 7566, NULL, 7698, 7788, 7698, 7566, 7782, 7566, 7566, 7698, 7698, 7698);
--==>>
/*
7566	JONES	MANAGER
7698	BLAKE	MANAGER
7782	    CLARK	MANAGER
7788	SCOTT	ANALYST
7839	KING    	PRESIDENT
7902    	FORD    	ANALYST
*/


SELECT EMPNO, ENAME, JOB
FROM TBL_EMP
WHERE EMPNO IN (SELECT MGR
                FROM TBL_EMP);
                
-- MGR 번호에 중복이 너무 많다!
-- 그걸 직접 제거해 보자.


SELECT EMPNO, ENAME, JOB
FROM TBL_EMP
WHERE EMPNO IN (7902, 7698, 7839, 7566, 7788, 7782);


SELECT DISTINCT(MGR)
FROM TBL_EMP;
--==>>
/*
7839
(null)
7782
7698
7902
7566
7788
*/



-- 서브쿼리 내부의 매니저 번호 중복을 제거해 주게 되면
-- 훨씬 적은 횟수를 비교할 수 있겠다!
SELECT EMPNO, ENAME, JOB
FROM TBL_EMP
WHERE EMPNO IN (SELECT DISTINCT MGR
                FROM TBL_EMP);
                

-- 직종들의 종류를 얻을 때도, 중복을 제거하여 종류만 얻어낼 수 있겠다!
SELECT DISTINCT(JOB)
FROM TBL_EMP;
--==>>
/*
CLERK
SALESMAN
PRESIDENT
MANAGER
ANALYST
*/

-- 부서번호의 종류를 얻을 때도 중복을 제거해 보자!!
SELECT DISTINCT(DEPTNO)
FROM TBL_EMP;
--==>>
/*
30
(null)
20
10
*/

--------------------------------------------------------------------------------


SELECT *
FROM TBL_SAWON;
--==>>
/*
1001	강혜성	9710171234567	2005-01-03	3000
1002    	박가영	9511182234567	1999-11-23	4000
1003	박나영	9902082234567	2006-08-10	4000
1004	최혜인	9708112234567	2010-05-06	5000
1005	아이유	0502034234567	2015-10-19	1000
1006	이하이	0609304234567	2012-06-17	1000
1007	인순이	6510102234567	1999-08-22	2000
1008	선동열	6909101234567	1998-01-10	2000
1009	이이경	0505053234567	2011-05-06	1500
1010	선우용녀	6611112234567	2000-01-16	1300
1011	이윤수	9501061234567	2009-09-19	4000
1012	    선우선	0606064234567	2011-11-11	2000
1013	남진	    6511111234567	1999-11-11	2000
1014	이주형	9904171234567	2009-11-11	2000
1015	남궁진	0202023234567	2010-10-10	2300
*/

--○ TBL_SAWON 테이블 백업(데이터 위주) → 각 테이블 간의 관계나 제약조건 등은 제외한 상태

CREATE TABLE TBL_SAWONBACKUP
AS
SELECT *
FROM TBL_SAWON;
--==>> Table TBL_SAWONBACKUP이(가) 생성되었습니다.

-- TBL_SAWON 테이블의 데이터들만 백업을 수행
-- 즉, 다른 이름의 테이블로 저장해 둔 상황



--○ 데이터 수정

UPDATE TBL_SAWON
SET SANAME = '똘똘이';
COMMIT;
--==>> 15개 행 이(가) 업데이트되었습니다.
--     커밋 완료.


SELECT *
FROM TBL_SAWON;
--==>>
/*
1001	똘똘이	9710171234567	2005-01-03	3000
1002    	똘똘이	9511182234567	1999-11-23	4000
1003	똘똘이	9902082234567	2006-08-10	4000
1004	똘똘이	9708112234567	2010-05-06	5000
1005	똘똘이	0502034234567	2015-10-19	1000
1006	똘똘이	0609304234567	2012-06-17	1000
1007	똘똘이	6510102234567	1999-08-22	2000
1008	똘똘이	6909101234567	1998-01-10	2000
1009	똘똘이	0505053234567	2011-05-06	1500
1010	똘똘이	6611112234567	2000-01-16	1300
1011	똘똘이	9501061234567	2009-09-19	4000
1012	    똘똘이	0606064234567	2011-11-11	2000
1013	똘똘이	6511111234567	1999-11-11	2000
1014	똘똘이	9904171234567	2009-11-11	2000
1015	똘똘이	0202023234567	2010-10-10	2300
*/




ROLLBACK;



SELECT *
FROM TBL_SAWONBACKUP;
--==> 
/*
1001	강혜성	9710171234567	2005-01-03	3000
1002	    박가영	9511182234567	1999-11-23	4000
1003	박나영	9902082234567	2006-08-10	4000
1004	최혜인	9708112234567	2010-05-06	5000
1005	아이유	0502034234567	2015-10-19	1000
1006	이하이	0609304234567	2012-06-17	1000
1007	인순이	6510102234567	1999-08-22	2000
1008	선동열	6909101234567	1998-01-10	2000
1009	이이경	0505053234567	2011-05-06	1500
1010	선우용녀	6611112234567	2000-01-16	1300
1011	이윤수	9501061234567	2009-09-19	4000
1012	    선우선	0606064234567	2011-11-11	2000
1013	남진	6511111234567	1999-11-11	2000
1014	이주형	9904171234567	2009-11-11	2000
1015	남궁진	0202023234567	2010-10-10	2300
*/




CREATE TABLE TEST_TABLE
AS
SELECT *
FROM TBL_SAWON;

SELECT *
FROM TEST_TABLE;



SELECT *
FROM TEST_TABLE TT
     INNER JOIN
     TBL_SAWONBACKUP TB
     ON TT.SANO = TB.SANO;



SELECT *
FROM TBL_SAWONBACKUP TB;


UPDATE TEST_TABLE TT
SET
SANAME
=
(
    SELECT TB.SANAME
    FROM TBL_SAWONBACKUP TB
    WHERE TT.SANO = TB.SANO
);

SELECT *
FROM TEST_TABLE;



SELECT *
FROM TBL_SAWON;


UPDATE TBL_SAWON TS
SET
TS.SANAME
=
(
    SELECT TB.SANAME
    FROM TBL_SAWONBACKUP TB
    WHERE TS.SANO = TB.SANO
);

SELECT *
FROM TBL_SAWON;





SELECT *
FROM TBL_SAWONBACKUP;

UPDATE TBL_SAWON
SET SANAME  = '강혜성'
WHERE SANAME = '똘똘이'
      AND
      SANO = 1001; -- 이렇게 일일이 변경하는 것은 무리다!



UPDATE TBL_SAWON
SET SANAME  = (TBL_SAWONBACKUP 테이블 각각의 SANAME)
WHERE SANAME = '똘똘이';    -- 내가 빠뜨렸던 조건이므로 다시 보자...
                          -- 만약, 일부의 데이터만 똘똘이일 경우, 이 조건을 적용해 주지 않았을 때
                          -- 다른 데이터들도 모두 데이터가 변경될 수가 있겠다.




UPDATE TBL_SAWON
SET SANAME  = ( SELECT SANAME
                FROM TBL_SAWONBACKUP
                WHERE SANO = TBL_SAWON.SANO)
WHERE SANAME = '똘똘이';
--==>> 15개 행 이(가) 업데이트되었습니다.



SELECT *
FROM TBL_SAWON;


COMMIT;

 



 
 
 [중간 수행평가 - 2차 제출물]

TBL_INSA(4팀_김지민).sql

SELECT USER
FROM DUAL;
--==>> SCOTT


--○ 테이블 생성 (SCOTT.TBL_INSA)
CREATE TABLE TBL_INSA
( NUM      NUMBER(5)    NOT NULL
, NAME     VARCHAR2(20) NOT NULL
, SSN      VARCHAR2(14) NOT NULL
, IBSADATE DATE         NOT NULL
, CITY     VARCHAR2(10)
, TEL      VARCHAR2(15)
, BUSEO    VARCHAR2(15) NOT NULL
, JIKWI    VARCHAR2(15) NOT NULL
, BASICPAY NUMBER(10)   NOT NULL
, SUDANG   NUMBER(10)   NOT NULL
, CONSTRAINT TBL_INSA_NUM_PK PRIMARY KEY(NUM)
);
--==>> Table TBL_INSA이(가) 생성되었습니다.


--※ 세션 기본값 설정
ALTER SESSION SET NLS_DATE_FORMAT ='YYYY-MM-DD';
--==>> Session이(가) 변경되었습니다.


--○ 데이터 입력
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1001, '홍길동', '771212-1022432', '1998-10-11', '서울', '011-2356-4528', '기획부', '부장', 2610000, 200000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1002, '이순신', '801007-1544236', '2000-11-29', '경기', '010-4758-6532', '총무부', '사원', 1320000, 200000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1003, '이순애', '770922-2312547', '1999-02-25', '인천', '010-4231-1236', '개발부', '부장', 2550000, 160000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1004, '김정훈', '790304-1788896', '2000-10-01', '전북', '019-5236-4221', '영업부', '대리', 1954200, 170000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1005, '한석봉', '811112-1566789', '2004-08-13', '서울', '018-5211-3542', '총무부', '사원', 1420000, 160000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1006, '이기자', '780505-2978541', '2002-02-11', '인천', '010-3214-5357', '개발부', '과장', 2265000, 150000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1007, '장인철', '780506-1625148', '1998-03-16', '제주', '011-2345-2525', '개발부', '대리', 1250000, 150000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1008, '김영년', '821011-2362514', '2002-04-30', '서울', '016-2222-4444', '홍보부', '사원', 950000 , 145000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1009, '나윤균', '810810-1552147', '2003-10-10', '경기', '019-1111-2222', '인사부', '사원', 840000 , 220400);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1010, '김종서', '751010-1122233', '1997-08-08', '부산', '011-3214-5555', '영업부', '부장', 2540000, 130000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1011, '유관순', '801010-2987897', '2000-07-07', '서울', '010-8888-4422', '영업부', '사원', 1020000, 140000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1012, '정한국', '760909-1333333', '1999-10-16', '강원', '018-2222-4242', '홍보부', '사원', 880000 , 114000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1013, '조미숙', '790102-2777777', '1998-06-07', '경기', '019-6666-4444', '홍보부', '대리', 1601000, 103000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1014, '황진이', '810707-2574812', '2002-02-15', '인천', '010-3214-5467', '개발부', '사원', 1100000, 130000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1015, '이현숙', '800606-2954687', '1999-07-26', '경기', '016-2548-3365', '총무부', '사원', 1050000, 104000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1016, '이상헌', '781010-1666678', '2001-11-29', '경기', '010-4526-1234', '개발부', '과장', 2350000, 150000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1017, '엄용수', '820507-1452365', '2000-08-28', '인천', '010-3254-2542', '개발부', '사원', 950000 , 210000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1018, '이성길', '801028-1849534', '2004-08-08', '전북', '018-1333-3333', '개발부', '사원', 880000 , 123000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1019, '박문수', '780710-1985632', '1999-12-10', '서울', '017-4747-4848', '인사부', '과장', 2300000, 165000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1020, '유영희', '800304-2741258', '2003-10-10', '전남', '011-9595-8585', '자재부', '사원', 880000 , 140000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1021, '홍길남', '801010-1111111', '2001-09-07', '경기', '011-9999-7575', '개발부', '사원', 875000 , 120000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1022, '이영숙', '800501-2312456', '2003-02-25', '전남', '017-5214-5282', '기획부', '대리', 1960000, 180000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1023, '김인수', '731211-1214576', '1995-02-23', '서울', NULL           , '영업부', '부장', 2500000, 170000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1024, '김말자', '830225-2633334', '1999-08-28', '서울', '011-5248-7789', '기획부', '대리', 1900000, 170000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1025, '우재옥', '801103-1654442', '2000-10-01', '서울', '010-4563-2587', '영업부', '사원', 1100000, 160000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1026, '김숙남', '810907-2015457', '2002-08-28', '경기', '010-2112-5225', '영업부', '사원', 1050000, 150000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1027, '김영길', '801216-1898752', '2000-10-18', '서울', '019-8523-1478', '총무부', '과장', 2340000, 170000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1028, '이남신', '810101-1010101', '2001-09-07', '제주', '016-1818-4848', '인사부', '사원', 892000 , 110000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1029, '김말숙', '800301-2020202', '2000-09-08', '서울', '016-3535-3636', '총무부', '사원', 920000 , 124000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1030, '정정해', '790210-2101010', '1999-10-17', '부산', '019-6564-6752', '총무부', '과장', 2304000, 124000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1031, '지재환', '771115-1687988', '2001-01-21', '서울', '019-5552-7511', '기획부', '부장', 2450000, 160000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1032, '심심해', '810206-2222222', '2000-05-05', '전북', '016-8888-7474', '자재부', '사원', 880000 , 108000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1033, '김미나', '780505-2999999', '1998-06-07', '서울', '011-2444-4444', '영업부', '사원', 1020000, 104000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1034, '이정석', '820505-1325468', '2005-09-26', '경기', '011-3697-7412', '기획부', '사원', 1100000, 160000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1035, '정영희', '831010-2153252', '2002-05-16', '인천', NULL           , '개발부', '사원', 1050000, 140000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1036, '이재영', '701126-2852147', '2003-08-10', '서울', '011-9999-9999', '자재부', '사원', 960400 , 190000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1037, '최석규', '770129-1456987', '1998-10-15', '인천', '011-7777-7777', '홍보부', '과장', 2350000, 187000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1038, '손인수', '791009-2321456', '1999-11-15', '부산', '010-6542-7412', '영업부', '대리', 2000000, 150000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1039, '고순정', '800504-2000032', '2003-12-28', '경기', '010-2587-7895', '영업부', '대리', 2010000, 160000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1040, '박세열', '790509-1635214', '2000-09-10', '경북', '016-4444-7777', '인사부', '대리', 2100000, 130000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1041, '문길수', '721217-1951357', '2001-12-10', '충남', '016-4444-5555', '자재부', '과장', 2300000, 150000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1042, '채정희', '810709-2000054', '2003-10-17', '경기', '011-5125-5511', '개발부', '사원', 1020000, 200000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1043, '양미옥', '830504-2471523', '2003-09-24', '서울', '016-8548-6547', '영업부', '사원', 1100000, 210000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1044, '지수환', '820305-1475286', '2004-01-21', '서울', '011-5555-7548', '영업부', '사원', 1060000, 220000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1045, '홍원신', '690906-1985214', '2003-03-16', '전북', '011-7777-7777', '영업부', '사원', 960000 , 152000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1046, '허경운', '760105-1458752', '1999-05-04', '경남', '017-3333-3333', '총무부', '부장', 2650000, 150000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1047, '산마루', '780505-1234567', '2001-07-15', '서울', '018-0505-0505', '영업부', '대리', 2100000, 112000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1048, '이기상', '790604-1415141', '2001-06-07', '전남', NULL           , '개발부', '대리', 2050000, 106000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1049, '이미성', '830908-2456548', '2000-04-07', '인천', '010-6654-8854', '개발부', '사원', 1300000, 130000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1050, '이미인', '810403-2828287', '2003-06-07', '경기', '011-8585-5252', '홍보부', '대리', 1950000, 103000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1051, '권영미', '790303-2155554', '2000-06-04', '서울', '011-5555-7548', '영업부', '과장', 2260000, 104000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1052, '권옥경', '820406-2000456', '2000-10-10', '경기', '010-3644-5577', '기획부', '사원', 1020000, 105000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1053, '김싱식', '800715-1313131', '1999-12-12', '전북', '011-7585-7474', '자재부', '사원', 960000 , 108000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1054, '정상호', '810705-1212141', '1999-10-16', '강원', '016-1919-4242', '홍보부', '사원', 980000 , 114000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1055, '정한나', '820506-2425153', '2004-06-07', '서울', '016-2424-4242', '영업부', '사원', 1000000, 104000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1056, '전용재', '800605-1456987', '2004-08-13', '인천', '010-7549-8654', '영업부', '대리', 1950000, 200000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1057, '이미경', '780406-2003214', '1998-02-11', '경기', '016-6542-7546', '자재부', '부장', 2520000, 160000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1058, '김신제', '800709-1321456', '2003-08-08', '인천', '010-2415-5444', '기획부', '대리', 1950000, 180000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1059, '임수봉', '810809-2121244', '2001-10-10', '서울', '011-4151-4154', '개발부', '사원', 890000 , 102000);
INSERT INTO TBL_INSA (NUM, NAME, SSN, IBSADATE, CITY, TEL, BUSEO, JIKWI, BASICPAY, SUDANG)
VALUES (1060, '김신애', '810809-2111111', '2001-10-10', '서울', '011-4151-4444', '개발부', '사원', 900000 , 102000);
--==>> 1 행 이(가) 삽입되었습니다. * 60


--○ 커밋
COMMIT;
--==>> 커밋 완료.


SELECT *
FROM TBL_INSA;
 

------------------------------------------------------------------------------------------------------------
-- 김지민_4팀

-- 01. TBL_INSA 테이블 전체자료 조회

SELECT *
FROM TBL_INSA;
--==>>
/*
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000
1002	이순신	801007-1544236	2000-11-29	경기	010-4758-6532	총무부	사원	1320000	200000
1003	이순애	770922-2312547	1999-02-25	인천	010-4231-1236	개발부	부장	2550000	160000
1004	김정훈	790304-1788896	2000-10-01	전북	019-5236-4221	영업부	대리	1954200	170000
1005	한석봉	811112-1566789	2004-08-13	서울	018-5211-3542	총무부	사원	1420000	160000
1006	이기자	780505-2978541	2002-02-11	인천	010-3214-5357	개발부	과장	2265000	150000
1007	장인철	780506-1625148	1998-03-16	제주	011-2345-2525	개발부	대리	1250000	150000
1008	김영년	821011-2362514	2002-04-30	서울	016-2222-4444	홍보부	사원	950000	145000
1009	나윤균	810810-1552147	2003-10-10	경기	019-1111-2222	인사부	사원	840000	220400
1010	김종서	751010-1122233	1997-08-08	부산	011-3214-5555	영업부	부장	2540000	130000
1011	유관순	801010-2987897	2000-07-07	서울	010-8888-4422	영업부	사원	1020000	140000
1012	정한국	760909-1333333	1999-10-16	강원	018-2222-4242	홍보부	사원	880000	114000
1013	조미숙	790102-2777777	1998-06-07	경기	019-6666-4444	홍보부	대리	1601000	103000
1014	황진이	810707-2574812	2002-02-15	인천	010-3214-5467	개발부	사원	1100000	130000
1015	이현숙	800606-2954687	1999-07-26	경기	016-2548-3365	총무부	사원	1050000	104000
1016	이상헌	781010-1666678	2001-11-29	경기	010-4526-1234	개발부	과장	2350000	150000
1017	엄용수	820507-1452365	2000-08-28	인천	010-3254-2542	개발부	사원	950000	210000
1018	이성길	801028-1849534	2004-08-08	전북	018-1333-3333	개발부	사원	880000	123000
1019	박문수	780710-1985632	1999-12-10	서울	017-4747-4848	인사부	과장	2300000	165000
1020	유영희	800304-2741258	2003-10-10	전남	011-9595-8585	자재부	사원	880000	140000
1021	홍길남	801010-1111111	2001-09-07	경기	011-9999-7575	개발부	사원	875000	120000
1022	이영숙	800501-2312456	2003-02-25	전남	017-5214-5282	기획부	대리	1960000	180000
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000
1024	김말자	830225-2633334	1999-08-28	서울	011-5248-7789	기획부	대리	1900000	170000
1025	우재옥	801103-1654442	2000-10-01	서울	010-4563-2587	영업부	사원	1100000	160000
1026	김숙남	810907-2015457	2002-08-28	경기	010-2112-5225	영업부	사원	1050000	150000
1027	김영길	801216-1898752	2000-10-18	서울	019-8523-1478	총무부	과장	2340000	170000
1028	이남신	810101-1010101	2001-09-07	제주	016-1818-4848	인사부	사원	892000	110000
1029	김말숙	800301-2020202	2000-09-08	서울	016-3535-3636	총무부	사원	920000	124000
1030	정정해	790210-2101010	1999-10-17	부산	019-6564-6752	총무부	과장	2304000	124000
1031	지재환	771115-1687988	2001-01-21	서울	019-5552-7511	기획부	부장	2450000	160000
1032	심심해	810206-2222222	2000-05-05	전북	016-8888-7474	자재부	사원	880000	108000
1033	김미나	780505-2999999	1998-06-07	서울	011-2444-4444	영업부	사원	1020000	104000
1034	이정석	820505-1325468	2005-09-26	경기	011-3697-7412	기획부	사원	1100000	160000
1035	정영희	831010-2153252	2002-05-16	인천		개발부	사원	1050000	140000
1036	이재영	701126-2852147	2003-08-10	서울	011-9999-9999	자재부	사원	960400	190000
1037	최석규	770129-1456987	1998-10-15	인천	011-7777-7777	홍보부	과장	2350000	187000
1038	손인수	791009-2321456	1999-11-15	부산	010-6542-7412	영업부	대리	2000000	150000
1039	고순정	800504-2000032	2003-12-28	경기	010-2587-7895	영업부	대리	2010000	160000
1040	박세열	790509-1635214	2000-09-10	경북	016-4444-7777	인사부	대리	2100000	130000
1041	문길수	721217-1951357	2001-12-10	충남	016-4444-5555	자재부	과장	2300000	150000
1042	채정희	810709-2000054	2003-10-17	경기	011-5125-5511	개발부	사원	1020000	200000
1043	양미옥	830504-2471523	2003-09-24	서울	016-8548-6547	영업부	사원	1100000	210000
1044	지수환	820305-1475286	2004-01-21	서울	011-5555-7548	영업부	사원	1060000	220000
1045	홍원신	690906-1985214	2003-03-16	전북	011-7777-7777	영업부	사원	960000	152000
1046	허경운	760105-1458752	1999-05-04	경남	017-3333-3333	총무부	부장	2650000	150000
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000
1048	이기상	790604-1415141	2001-06-07	전남		개발부	대리	2050000	106000
1049	이미성	830908-2456548	2000-04-07	인천	010-6654-8854	개발부	사원	1300000	130000
1050	이미인	810403-2828287	2003-06-07	경기	011-8585-5252	홍보부	대리	1950000	103000								
*/

--★ 까먹었어...

-- 02. SCOTT 사용자 소유 테이블 목록 확인(2가지 구문 활용)

SELECT *
FROM ALL_TABLES
WHERE OWNER = 'SCOTT';

SELECT *
FROM USER_TABLES;
--==>>
/*
TBL_EMP
DEPT
EMP
BONUS
SALGRADE
TBL_EXAMPLE2
EMP4
EMP5
TBL_DEPT
TBL_SAWON
TBL_WATCH
TBL_FILES
TBL_BOARD
TBL_JUMUN
TBL_JUMUN_TEST_TABLE
TBL_JUMUNBACKUP2
TBL_SAWONBACKUP
TBL_JUMUNBACKUP
TEST_TABLE
TBL_INSA
*/



--03. TBL_INSA 테이블 구조 확인
DESC TBL_INSA;
--==>>
/*
이름       널?       유형           
-------- -------- ------------ 
NUM      NOT NULL NUMBER(5)    
NAME     NOT NULL VARCHAR2(20) 
SSN      NOT NULL VARCHAR2(14) 
IBSADATE NOT NULL DATE         
CITY              VARCHAR2(10) 
TEL               VARCHAR2(15) 
BUSEO    NOT NULL VARCHAR2(15) 
JIKWI    NOT NULL VARCHAR2(15) 
BASICPAY NOT NULL NUMBER(10)   
SUDANG   NOT NULL NUMBER(10)
*/

-- 04. TBL_INSA 테이블의 이름(NAME), 기본급(BASICPAY) 조회


SELECT NAME, BASICPAY
FROM TBL_INSA;
--==>>
/*
홍길동	2610000
이순신	1320000
이순애	2550000
김정훈	1954200
한석봉	1420000
이기자	2265000
장인철	1250000
김영년	950000
나윤균	840000
김종서	2540000
유관순	1020000
정한국	880000
조미숙	1601000
황진이	1100000
이현숙	1050000
이상헌	2350000
엄용수	950000
이성길	880000
박문수	2300000
유영희	880000
홍길남	875000
이영숙	1960000
김인수	2500000
김말자	1900000
우재옥	1100000
김숙남	1050000
김영길	2340000
이남신	892000
김말숙	920000
정정해	2304000
지재환	2450000
심심해	880000
김미나	1020000
이정석	1100000
정영희	1050000
이재영	960400
최석규	2350000
손인수	2000000
고순정	2010000
박세열	2100000
문길수	2300000
채정희	1020000
양미옥	1100000
지수환	1060000
홍원신	960000
허경운	2650000
산마루	2100000
이기상	2050000
이미성	1300000
이미인	1950000
권영미	2260000
권옥경	1020000
김싱식	960000
정상호	980000
정한나	1000000
전용재	1950000
이미경	2520000
김신제	1950000
임수봉	890000
김신애	900000
*/


--05. TBL_INSA 테이블의 이름(NAME), 기본급(BASICPAY), 수당(SUDANG), 기본급+수당 조회


SELECT NAME "이름", BASICPAY "기본급", SUDANG "수당", BASICPAY + SUDANG "기본급+수당"
FROM TBL_INSA;
--==>>
/*
홍길동	2610000	200000	2810000
이순신	1320000	200000	1520000
이순애	2550000	160000	2710000
김정훈	1954200	170000	2124200
한석봉	1420000	160000	1580000
이기자	2265000	150000	2415000
장인철	1250000	150000	1400000
김영년	950000	145000	1095000
나윤균	840000	220400	1060400
김종서	2540000	130000	2670000
유관순	1020000	140000	1160000
정한국	880000	114000	994000
조미숙	1601000	103000	1704000
황진이	1100000	130000	1230000
이현숙	1050000	104000	1154000
이상헌	2350000	150000	2500000
엄용수	950000	210000	1160000
이성길	880000	123000	1003000
박문수	2300000	165000	2465000
유영희	880000	140000	1020000
홍길남	875000	120000	995000
이영숙	1960000	180000	2140000
김인수	2500000	170000	2670000
김말자	1900000	170000	2070000
우재옥	1100000	160000	1260000
김숙남	1050000	150000	1200000
김영길	2340000	170000	2510000
이남신	892000	110000	1002000
김말숙	920000	124000	1044000
정정해	2304000	124000	2428000
지재환	2450000	160000	2610000
심심해	880000	108000	988000
김미나	1020000	104000	1124000
이정석	1100000	160000	1260000
정영희	1050000	140000	1190000
이재영	960400	190000	1150400
최석규	2350000	187000	2537000
손인수	2000000	150000	2150000
고순정	2010000	160000	2170000
박세열	2100000	130000	2230000
문길수	2300000	150000	2450000
채정희	1020000	200000	1220000
양미옥	1100000	210000	1310000
지수환	1060000	220000	1280000
홍원신	960000	152000	1112000
허경운	2650000	150000	2800000
산마루	2100000	112000	2212000
이기상	2050000	106000	2156000
이미성	1300000	130000	1430000
이미인	1950000	103000	2053000
권영미	2260000	104000	2364000
권옥경	1020000	105000	1125000
김싱식	960000	108000	1068000
정상호	980000	114000	1094000
정한나	1000000	104000	1104000
전용재	1950000	200000	2150000
이미경	2520000	160000	2680000
김신제	1950000	180000	2130000
임수봉	890000	102000	992000
김신애	900000	102000	1002000
*/




--06. TBL_INSA 테이블의 이름(NAME), 출신도(CITY), 부서명(BUSEO) 조회. 별칭(ALIAS) 사용.


SELECT NAME "이름", CITY "출신도", BUSEO "부서명"
FROM TBL_INSA;
--==>>
/*
홍길동	서울	기획부
이순신	경기	총무부
이순애	인천	개발부
김정훈	전북	영업부
한석봉	서울	총무부
이기자	인천	개발부
장인철	제주	개발부
김영년	서울	홍보부
나윤균	경기	인사부
김종서	부산	영업부
유관순	서울	영업부
정한국	강원	홍보부
조미숙	경기	홍보부
황진이	인천	개발부
이현숙	경기	총무부
이상헌	경기	개발부
엄용수	인천	개발부
이성길	전북	개발부
박문수	서울	인사부
유영희	전남	자재부
홍길남	경기	개발부
이영숙	전남	기획부
김인수	서울	영업부
김말자	서울	기획부
우재옥	서울	영업부
김숙남	경기	영업부
김영길	서울	총무부
이남신	제주	인사부
김말숙	서울	총무부
정정해	부산	총무부
지재환	서울	기획부
심심해	전북	자재부
김미나	서울	영업부
이정석	경기	기획부
정영희	인천	개발부
이재영	서울	자재부
최석규	인천	홍보부
손인수	부산	영업부
고순정	경기	영업부
박세열	경북	인사부
문길수	충남	자재부
채정희	경기	개발부
양미옥	서울	영업부
지수환	서울	영업부
홍원신	전북	영업부
허경운	경남	총무부
산마루	서울	영업부
이기상	전남	개발부
이미성	인천	개발부
이미인	경기	홍보부
권영미	서울	영업부
권옥경	경기	기획부
김싱식	전북	자재부
정상호	강원	홍보부
정한나	서울	영업부
전용재	인천	영업부
이미경	경기	자재부
김신제	인천	기획부
임수봉	서울	개발부
김신애	서울	개발부
*/




--07. 서울 사람의 이름(NAME), 출신도(CITY), 부서명(BUSEO), 직위(JIKWI) 조회

SELECT NAME "이름", CITY "출신도", BUSEO "부서명", JIKWI "직위"
FROM TBL_INSA
WHERE CITY LIKE '서울';
--==>>
/*
홍길동	서울	기획부	부장
한석봉	서울	총무부	사원
김영년	서울	홍보부	사원
유관순	서울	영업부	사원
박문수	서울	인사부	과장
김인수	서울	영업부	부장
김말자	서울	기획부	대리
우재옥	서울	영업부	사원
김영길	서울	총무부	과장
김말숙	서울	총무부	사원
지재환	서울	기획부	부장
김미나	서울	영업부	사원
이재영	서울	자재부	사원
양미옥	서울	영업부	사원
지수환	서울	영업부	사원
산마루	서울	영업부	대리
권영미	서울	영업부	과장
정한나	서울	영업부	사원
임수봉	서울	개발부	사원
김신애	서울	개발부	사원
*/




--08. 출신도가 서울 사람이면서       → WHERE 구문
    기본급이 150만원 이상인 사람   → WHERE 구문
    조회 (NAME, CITY, BASICPAY, SSN)


SELECT NAME, CITY, BASICPAY, SSN
FROM TBL_INSA
WHERE CITY LIKE '서울'
      AND
      BASICPAY >= 1500000;
--==>>
/*
홍길동	서울	2610000	771212-1022432
박문수	서울	2300000	780710-1985632
김인수	서울	2500000	731211-1214576
김말자	서울	1900000	830225-2633334
김영길	서울	2340000	801216-1898752
지재환	서울	2450000	771115-1687988
산마루	서울	2100000	780505-1234567
권영미	서울	2260000	790303-2155554
*/


--09. 출신도가 '인천' 이면서, 기본급이 100만원이상 ~ 200만원 미만인 경우만 모든정보 조회.


SELECT *
FROM TBL_INSA
WHERE CITY LIKE '인천'
      AND
      BASICPAY BETWEEN 1000000 AND 1999999;
--==>>
/*
1014	황진이	810707-2574812	2002-02-15	인천	010-3214-5467	개발부	사원	1100000	130000
1035	정영희	831010-2153252	2002-05-16	인천		개발부	사원	1050000	140000
1049	이미성	830908-2456548	2000-04-07	인천	010-6654-8854	개발부	사원	1300000	130000
1056	전용재	800605-1456987	2004-08-13	인천	010-7549-8654	영업부	대리	1950000	200000
1058	김신제	800709-1321456	2003-08-08	인천	010-2415-5444	기획부	대리	1950000	180000
*/





--10. 출신도가 서울 사람이거나 부서가 개발부인 자료 조회 (NAME, CITY, BUSEO)


SELECT NAME, CITY, BUSEO
FROM TBL_INSA
WHERE CITY LIKE '서울'
      OR
      BUSEO LIKE '개발부';
--==>>
/*
홍길동	서울	기획부
이순애	인천	개발부
한석봉	서울	총무부
이기자	인천	개발부
장인철	제주	개발부
김영년	서울	홍보부
유관순	서울	영업부
황진이	인천	개발부
이상헌	경기	개발부
엄용수	인천	개발부
이성길	전북	개발부
박문수	서울	인사부
홍길남	경기	개발부
김인수	서울	영업부
김말자	서울	기획부
우재옥	서울	영업부
김영길	서울	총무부
김말숙	서울	총무부
지재환	서울	기획부
김미나	서울	영업부
정영희	인천	개발부
이재영	서울	자재부
채정희	경기	개발부
양미옥	서울	영업부
지수환	서울	영업부
산마루	서울	영업부
이기상	전남	개발부
이미성	인천	개발부
권영미	서울	영업부
정한나	서울	영업부
임수봉	서울	개발부
김신애	서울	개발부
*/




-- 11. 출신도가 서울, 경기인 사람만 조회 (NAME, CITY, BUSEO). IN 연산자 사용.

SELECT NAME, CITY, BUSEO
FROM TBL_INSA
WHERE CITY IN ('서울', '경기');
--==>>
/*
홍길동	서울	기획부
이순신	경기	총무부
한석봉	서울	총무부
김영년	서울	홍보부
나윤균	경기	인사부
유관순	서울	영업부
조미숙	경기	홍보부
이현숙	경기	총무부
이상헌	경기	개발부
박문수	서울	인사부
홍길남	경기	개발부
김인수	서울	영업부
김말자	서울	기획부
우재옥	서울	영업부
김숙남	경기	영업부
김영길	서울	총무부
김말숙	서울	총무부
지재환	서울	기획부
김미나	서울	영업부
이정석	경기	기획부
이재영	서울	자재부
고순정	경기	영업부
채정희	경기	개발부
양미옥	서울	영업부
지수환	서울	영업부
산마루	서울	영업부
이미인	경기	홍보부
권영미	서울	영업부
권옥경	경기	기획부
정한나	서울	영업부
이미경	경기	자재부
임수봉	서울	개발부
김신애	서울	개발부
*/




--12. 부서가 '개발부' 이거나 '영업부'인 사원의 모든정보 조회. IN 연산자 사용.


SELECT *
FROM TBL_INSA
WHERE BUSEO IN ('개발부', '영업부');
--==>>
/*
1003	이순애	770922-2312547	1999-02-25	인천	010-4231-1236	개발부	부장	2550000	160000
1004	김정훈	790304-1788896	2000-10-01	전북	019-5236-4221	영업부	대리	1954200	170000
1006	이기자	780505-2978541	2002-02-11	인천	010-3214-5357	개발부	과장	2265000	150000
1007	장인철	780506-1625148	1998-03-16	제주	011-2345-2525	개발부	대리	1250000	150000
1010	김종서	751010-1122233	1997-08-08	부산	011-3214-5555	영업부	부장	2540000	130000
1011	유관순	801010-2987897	2000-07-07	서울	010-8888-4422	영업부	사원	1020000	140000
1014	황진이	810707-2574812	2002-02-15	인천	010-3214-5467	개발부	사원	1100000	130000
1016	이상헌	781010-1666678	2001-11-29	경기	010-4526-1234	개발부	과장	2350000	150000
1017	엄용수	820507-1452365	2000-08-28	인천	010-3254-2542	개발부	사원	950000	210000
1018	이성길	801028-1849534	2004-08-08	전북	018-1333-3333	개발부	사원	880000	123000
1021	홍길남	801010-1111111	2001-09-07	경기	011-9999-7575	개발부	사원	875000	120000
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000
1025	우재옥	801103-1654442	2000-10-01	서울	010-4563-2587	영업부	사원	1100000	160000
1026	김숙남	810907-2015457	2002-08-28	경기	010-2112-5225	영업부	사원	1050000	150000
1033	김미나	780505-2999999	1998-06-07	서울	011-2444-4444	영업부	사원	1020000	104000
1035	정영희	831010-2153252	2002-05-16	인천		개발부	사원	1050000	140000
1038	손인수	791009-2321456	1999-11-15	부산	010-6542-7412	영업부	대리	2000000	150000
1039	고순정	800504-2000032	2003-12-28	경기	010-2587-7895	영업부	대리	2010000	160000
1042	채정희	810709-2000054	2003-10-17	경기	011-5125-5511	개발부	사원	1020000	200000
1043	양미옥	830504-2471523	2003-09-24	서울	016-8548-6547	영업부	사원	1100000	210000
1044	지수환	820305-1475286	2004-01-21	서울	011-5555-7548	영업부	사원	1060000	220000
1045	홍원신	690906-1985214	2003-03-16	전북	011-7777-7777	영업부	사원	960000	152000
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000
1048	이기상	790604-1415141	2001-06-07	전남		개발부	대리	2050000	106000
1049	이미성	830908-2456548	2000-04-07	인천	010-6654-8854	개발부	사원	1300000	130000
1051	권영미	790303-2155554	2000-06-04	서울	011-5555-7548	영업부	과장	2260000	104000
1055	정한나	820506-2425153	2004-06-07	서울	016-2424-4242	영업부	사원	1000000	104000
1056	전용재	800605-1456987	2004-08-13	인천	010-7549-8654	영업부	대리	1950000	200000
1059	임수봉	810809-2121244	2001-10-10	서울	011-4151-4154	개발부	사원	890000	102000
1060	김신애	810809-2111111	2001-10-10	서울	011-4151-4444	개발부	사원	900000	102000
*/




--13. 급여(BASICPAY + SUDANG)가 250만원 이상인 사람 조회. → WHERE 구문
--    단, 필드명은 한글로 출력. → 별칭(ALIAS)
--    (NAME, BASICPAY, SUDANG, BASICPAY+SUDANG);
    
    
SELECT NAME "이름", BASICPAY "기본급", SUDANG "수당", BASICPAY+SUDANG "급여"
FROM TBL_INSA
WHERE BASICPAY + SUDANG >= 2500000;
--==>>
/*
홍길동	2610000	200000	2810000
이순애	2550000	160000	2710000
김종서	2540000	130000	2670000
이상헌	2350000	150000	2500000
김인수	2500000	170000	2670000
김영길	2340000	170000	2510000
지재환	2450000	160000	2610000
최석규	2350000	187000	2537000
허경운	2650000	150000	2800000
이미경	2520000	160000	2680000
*/


--14. 주민번호를 기준으로 남자(성별 자릿수가 1, 3)만 조회. 
--    ( 이름(NAME), 주민번호(SSN) )
--    단, SUBSTR() 함수 이용;


SELECT NAME "이름", SSN "주민번호"
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('1', '3');
--==>>
/*
홍길동	771212-1022432
이순신	801007-1544236
김정훈	790304-1788896
한석봉	811112-1566789
장인철	780506-1625148
나윤균	810810-1552147
김종서	751010-1122233
정한국	760909-1333333
이상헌	781010-1666678
엄용수	820507-1452365
이성길	801028-1849534
박문수	780710-1985632
홍길남	801010-1111111
김인수	731211-1214576
우재옥	801103-1654442
김영길	801216-1898752
이남신	810101-1010101
지재환	771115-1687988
이정석	820505-1325468
최석규	770129-1456987
박세열	790509-1635214
문길수	721217-1951357
지수환	820305-1475286
홍원신	690906-1985214
허경운	760105-1458752
산마루	780505-1234567
이기상	790604-1415141
김싱식	800715-1313131
정상호	810705-1212141
전용재	800605-1456987
김신제	800709-1321456
*/
    
    
-- 15. 주민번호를 기준으로 80년대 태어난 사람만 조회. 
--    ( 이름(NAME), 주민번호(SSN) );


SELECT NAME, SSN
FROM TBL_INSA
WHERE SUBSTR(SSN, 1, 1) LIKE '8' -- 80년대 이면서...
      AND
      SUBSTR(SSN, 8, 1) IN ('1', '2');  -- 2000년대 이전 출생자.
--==>>
/*
이순신	801007-1544236
한석봉	811112-1566789
김영년	821011-2362514
나윤균	810810-1552147
유관순	801010-2987897
황진이	810707-2574812
이현숙	800606-2954687
엄용수	820507-1452365
이성길	801028-1849534
유영희	800304-2741258
홍길남	801010-1111111
이영숙	800501-2312456
김말자	830225-2633334
우재옥	801103-1654442
김숙남	810907-2015457
김영길	801216-1898752
이남신	810101-1010101
김말숙	800301-2020202
심심해	810206-2222222
이정석	820505-1325468
정영희	831010-2153252
고순정	800504-2000032
채정희	810709-2000054
양미옥	830504-2471523
지수환	820305-1475286
이미성	830908-2456548
이미인	810403-2828287
권옥경	820406-2000456
김싱식	800715-1313131
정상호	810705-1212141
정한나	820506-2425153
전용재	800605-1456987
김신제	800709-1321456
임수봉	810809-2121244
김신애	810809-2111111
*/

-- 나이 계산하기 (한국식)
SELECT CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '2') -- 1990년도 출생자라면...
            THEN EXTRACT(YEAR FROM SYSDATE) - 1900 - (TO_NUMBER(SUBSTR(SSN, 1, 2))) + 1
            WHEN SUBSTR(SSN, 8, 1) IN ('3', '4') -- 2000년도 출생자라면...
            THEN EXTRACT(YEAR FROM SYSDATE) - 2000 - (TO_NUMBER(SUBSTR(SSN, 1, 2))) + 1
            ELSE -1 -- 알 수 없음.
       END "현재 나이"
       , NAME
            

-- 나이 계산
SELECT EXTRACT(YEAR FROM SYSDATE) - 1900 - (TO_NUMBER(SUBSTR(SSN, 1, 2)) + 1)
FROM TBL_INSA;
    
    

--16. 서울 사람 중에서 70년대 태어난 사람만 조회. SUBSTR() 함수 이용.


SELECT *
FROM TBL_INSA
WHERE CITY LIKE '서울'
      AND
      SUBSTR(SSN, 1, 1) = '7'   -- 70년대생이면서...
      AND
      SUBSTR(SSN, 8, 1) IN ('1', '2');   -- 2000년대 이전 출생자.
--==>>
/*
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000
1019	박문수	780710-1985632	1999-12-10	서울	017-4747-4848	인사부	과장	2300000	165000
1023	    김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000
1031	지재환	771115-1687988	2001-01-21	서울	019-5552-7511	기획부	부장	2450000	160000
1033	김미나	780505-2999999	1998-06-07	서울	011-2444-4444	영업부	사원	1020000	104000
1036	이재영	701126-2852147	2003-08-10	서울	011-9999-9999	자재부	사원	960400	190000
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000
1051	권영미	790303-2155554	2000-06-04	서울	011-5555-7548	영업부	과장	2260000	104000
*/



-- 17. 서울 사람 중에서 70년대 태어난 남자만 조회. SUBSTR() 함수 이용.

SELECT *
FROM TBL_INSA
WHERE CITY LIKE '서울'
      AND 
      SUBSTR(SSN, 1, 1) = '7'   -- 70년대생이면서...
      AND
      SUBSTR(SSN, 8, 1) = '1';   -- 2000년대 이전 남자는 주민번호 7번째 자리 1
--==>>
/*
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000
1019	박문수	780710-1985632	1999-12-10	서울	017-4747-4848	인사부	과장	2300000	165000
1023	    김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000
1031	지재환	771115-1687988	2001-01-21	서울	019-5552-7511	기획부	부장	2450000	160000
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000
*/




--18. 서울 사람이면서 김씨만 조회
--    단, 성씨가 한 글자라는 가정. 
--    ( 이름, 출신도 )
--    SUBSTR() 함수 이용.;

--SELECT NAME
--FROM TBL_INSA
--WHERE NAME LIKE '김%'
--      AND
--      CITY LIKE '서울';
    
SELECT *
FROM TBL_INSA
WHERE CITY LIKE '서울'
      AND
      SUBSTR(NAME, 1, 1) = '김';
--==>>
/*
1008	김영년	821011-2362514	2002-04-30	서울	016-2222-4444	홍보부	사원	950000	145000
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000
1024	김말자	830225-2633334	1999-08-28	서울	011-5248-7789	기획부	대리	1900000	170000
1027	김영길	801216-1898752	2000-10-18	서울	019-8523-1478	총무부	과장	2340000	170000
1029	김말숙	800301-2020202	2000-09-08	서울	016-3535-3636	총무부	사원	920000	124000
1033	김미나	780505-2999999	1998-06-07	서울	011-2444-4444	영업부	사원	1020000	104000
1060	김신애	810809-2111111	2001-10-10	서울	011-4151-4444	개발부	사원	900000	102000
*/






-- 19. 2000년도에 입사한 사람 조회. (이름, 출신도, 입사일).

SELECT NAME "이름", CITY "출신도", IBSADATE "입사일"
FROM TBL_INSA
WHERE SUBSTR(IBSADATE, 1, 1) LIKE '2';
--==>>
/*
이순신	경기	2000-11-29
김정훈	전북	2000-10-01
한석봉	서울	2004-08-13
이기자	인천	2002-02-11
김영년	서울	2002-04-30
나윤균	경기	2003-10-10
유관순	서울	2000-07-07
황진이	인천	2002-02-15
이상헌	경기	2001-11-29
엄용수	인천	2000-08-28
이성길	전북	2004-08-08
유영희	전남	2003-10-10
홍길남	경기	2001-09-07
이영숙	전남	2003-02-25
우재옥	서울	2000-10-01
김숙남	경기	2002-08-28
김영길	서울	2000-10-18
이남신	제주	2001-09-07
김말숙	서울	2000-09-08
지재환	서울	2001-01-21
심심해	전북	2000-05-05
이정석	경기	2005-09-26
정영희	인천	2002-05-16
이재영	서울	2003-08-10
고순정	경기	2003-12-28
박세열	경북	2000-09-10
문길수	충남	2001-12-10
채정희	경기	2003-10-17
양미옥	서울	2003-09-24
지수환	서울	2004-01-21
홍원신	전북	2003-03-16
산마루	서울	2001-07-15
이기상	전남	2001-06-07
이미성	인천	2000-04-07
이미인	경기	2003-06-07
권영미	서울	2000-06-04
권옥경	경기	2000-10-10
정한나	서울	2004-06-07
전용재	인천	2004-08-13
김신제	인천	2003-08-08
임수봉	서울	2001-10-10
김신애	서울	2001-10-10
*/



--20. 2000년 10월에 입사한 사람 조회. (이름, 출신도, 입사일).


SELECT NAME "이름", CITY "출신도", IBSADATE "입사일"
FROM TBL_INSA
WHERE TO_CHAR(IBSADATE, 'YYYY-MM') = '2000-10';
--==>>
/*
김정훈	전북	2000-10-01
우재옥	서울	2000-10-01
김영길	서울	2000-10-18
권옥경	경기	2000-10-10
*/






--21. 주민번호를 기준으로 직원의 나이 조회.
--    단, 모든 직원이 1900년대에 태어났다는 가정. (이름, 주민번호, 나이)

-- 나이 계산하기 (한국식, 1900년대 출생자)
SELECT NAME "이름"
     , SSN "주민번호"
     , EXTRACT(YEAR FROM SYSDATE) - 1900 - (TO_NUMBER(SUBSTR(SSN, 1, 2))) + 1 "나이"
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('1', '2');
--==>>
/*
홍길동	771212-1022432	47
이순신	801007-1544236	44
이순애	770922-2312547	47
김정훈	790304-1788896	45
한석봉	811112-1566789	43
이기자	780505-2978541	46
장인철	780506-1625148	46
김영년	821011-2362514	42
나윤균	810810-1552147	43
김종서	751010-1122233	49
유관순	801010-2987897	44
정한국	760909-1333333	48
조미숙	790102-2777777	45
황진이	810707-2574812	43
이현숙	800606-2954687	44
이상헌	781010-1666678	46
엄용수	820507-1452365	42
이성길	801028-1849534	44
박문수	780710-1985632	46
유영희	800304-2741258	44
홍길남	801010-1111111	44
이영숙	800501-2312456	44
김인수	731211-1214576	51
김말자	830225-2633334	41
우재옥	801103-1654442	44
김숙남	810907-2015457	43
김영길	801216-1898752	44
이남신	810101-1010101	43
김말숙	800301-2020202	44
정정해	790210-2101010	45
지재환	771115-1687988	47
심심해	810206-2222222	43
김미나	780505-2999999	46
이정석	820505-1325468	42
정영희	831010-2153252	41
이재영	701126-2852147	54
최석규	770129-1456987	47
손인수	791009-2321456	45
고순정	800504-2000032	44
박세열	790509-1635214	45
문길수	721217-1951357	52
채정희	810709-2000054	43
양미옥	830504-2471523	41
지수환	820305-1475286	42
홍원신	690906-1985214	55
허경운	760105-1458752	48
산마루	780505-1234567	46
이기상	790604-1415141	45
이미성	830908-2456548	41
이미인	810403-2828287	43
권영미	790303-2155554	45
권옥경	820406-2000456	42
김싱식	800715-1313131	44
정상호	810705-1212141	43
정한나	820506-2425153	42
전용재	800605-1456987	44
이미경	780406-2003214	46
김신제	800709-1321456	44
임수봉	810809-2121244	43
김신애	810809-2111111	43
*/


--22. 주민번호 기준으로 현재 나이대가 20대인 사람만 조회.

SELECT *
FROM
TBL_INSA INSA
INNER JOIN
(    
    SELECT EXTRACT(YEAR FROM SYSDATE) - 1900 - (TO_NUMBER(SUBSTR(SSN, 1, 2))) + 1 "나이"
         , SSN "주민번호"
    FROM TBL_INSA
) T
ON INSA.SSN = T.주민번호
WHERE T.나이 BETWEEN 20 AND 29;
--==>> 조회 결과 없음. 다 40대예요~!!!



--23. 주민번호 기준으로 5월 생만 조회. 
--    단, SUBSTR() 함수 이용.
    
SELECT *
FROM TBL_INSA
WHERE TO_NUMBER(SUBSTR(SSN, 3, 2)) = 5;


--==>>
/*
1006	이기자	780505-2978541	2002-02-11	인천	010-3214-5357	개발부	과장	2265000	150000
1007	장인철	780506-1625148	1998-03-16	제주	011-2345-2525	개발부	대리	1250000	150000
1017	엄용수	820507-1452365	2000-08-28	인천	010-3254-2542	개발부	사원	950000	210000
1022	이영숙	800501-2312456	2003-02-25	전남	017-5214-5282	기획부	대리	1960000	180000
1033	김미나	780505-2999999	1998-06-07	서울	011-2444-4444	영업부	사원	1020000	104000
1034	이정석	820505-1325468	2005-09-26	경기	011-3697-7412	기획부	사원	1100000	160000
1039	고순정	800504-2000032	2003-12-28	경기	010-2587-7895	영업부	대리	2010000	160000
1040	박세열	790509-1635214	2000-09-10	경북	016-4444-7777	인사부	대리	2100000	130000
1043	양미옥	830504-2471523	2003-09-24	서울	016-8548-6547	영업부	사원	1100000	210000
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000
1055	정한나	820506-2425153	2004-06-07	서울	016-2424-4242	영업부	사원	1000000	104000
*/


--
--24. 주민번호 기준으로 5월 생만 조회. 
--    단, TO_CHAR() 함수 이용.

--① 주민번호 앞 6자리를 서브스트링으로 가져옵니다.
--② 앞에 문자 '19'를 붙여 ①과 문자열 결합합니다.
--③ 그것을 DATE 형식으로 바꿉니다.
--④ 그것을 다시 문자 형식으로 바꾸기 위해 TO_CHAR() 함수를 사용했습니다.

SELECT *
FROM TBL_INSA
WHERE TO_CHAR(TO_DATE(CONCAT(19, SUBSTR(SSN, 1, 6)), 'YYYY-MM-DD'), 'MM') = '05';
--==>>
/*
1006	이기자	780505-2978541	2002-02-11	인천	010-3214-5357	개발부	과장	2265000	150000
1007	장인철	780506-1625148	1998-03-16	제주	011-2345-2525	개발부	대리	1250000	150000
1017	엄용수	820507-1452365	2000-08-28	인천	010-3254-2542	개발부	사원	950000	210000
1022	이영숙	800501-2312456	2003-02-25	전남	017-5214-5282	기획부	대리	1960000	180000
1033	김미나	780505-2999999	1998-06-07	서울	011-2444-4444	영업부	사원	1020000	104000
1034	이정석	820505-1325468	2005-09-26	경기	011-3697-7412	기획부	사원	1100000	160000
1039	고순정	800504-2000032	2003-12-28	경기	010-2587-7895	영업부	대리	2010000	160000
1040	박세열	790509-1635214	2000-09-10	경북	016-4444-7777	인사부	대리	2100000	130000
1043	양미옥	830504-2471523	2003-09-24	서울	016-8548-6547	영업부	사원	1100000	210000
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000
1055	정한나	820506-2425153	2004-06-07	서울	016-2424-4242	영업부	사원	1000000	104000
*/




--25. 출신도 내림차순으로 정렬하고, 출신도가 같으면 기본급 내림차순 정렬 조회.

SELECT *
FROM TBL_INSA
ORDER BY CITY DESC, BASICPAY DESC;
--==>> 
/*
1041	문길수	721217-1951357	2001-12-10	충남	016-4444-5555	자재부	과장	2300000	150000
1007	장인철	780506-1625148	1998-03-16	제주	011-2345-2525	개발부	대리	1250000	150000
1028	이남신	810101-1010101	2001-09-07	제주	016-1818-4848	인사부	사원	892000	110000
1004	김정훈	790304-1788896	2000-10-01	전북	019-5236-4221	영업부	대리	1954200	170000
1053	김싱식	800715-1313131	1999-12-12	전북	011-7585-7474	자재부	사원	960000	108000
1045	홍원신	690906-1985214	2003-03-16	전북	011-7777-7777	영업부	사원	960000	152000
1032	심심해	810206-2222222	2000-05-05	전북	016-8888-7474	자재부	사원	880000	108000
1018	이성길	801028-1849534	2004-08-08	전북	018-1333-3333	개발부	사원	880000	123000
1048	이기상	790604-1415141	2001-06-07	전남		개발부	대리	2050000	106000
1022	이영숙	800501-2312456	2003-02-25	전남	017-5214-5282	기획부	대리	1960000	180000
1020	유영희	800304-2741258	2003-10-10	전남	011-9595-8585	자재부	사원	880000	140000
1003	이순애	770922-2312547	1999-02-25	인천	010-4231-1236	개발부	부장	2550000	160000
1037	최석규	770129-1456987	1998-10-15	인천	011-7777-7777	홍보부	과장	2350000	187000
1006	이기자	780505-2978541	2002-02-11	인천	010-3214-5357	개발부	과장	2265000	150000
1056	전용재	800605-1456987	2004-08-13	인천	010-7549-8654	영업부	대리	1950000	200000
1058	김신제	800709-1321456	2003-08-08	인천	010-2415-5444	기획부	대리	1950000	180000
1049	이미성	830908-2456548	2000-04-07	인천	010-6654-8854	개발부	사원	1300000	130000
1014	황진이	810707-2574812	2002-02-15	인천	010-3214-5467	개발부	사원	1100000	130000
1035	정영희	831010-2153252	2002-05-16	인천		개발부	사원	1050000	140000
1017	엄용수	820507-1452365	2000-08-28	인천	010-3254-2542	개발부	사원	950000	210000
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000
1031	지재환	771115-1687988	2001-01-21	서울	019-5552-7511	기획부	부장	2450000	160000
1027	김영길	801216-1898752	2000-10-18	서울	019-8523-1478	총무부	과장	2340000	170000
1019	박문수	780710-1985632	1999-12-10	서울	017-4747-4848	인사부	과장	2300000	165000
1051	권영미	790303-2155554	2000-06-04	서울	011-5555-7548	영업부	과장	2260000	104000
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000
1024	김말자	830225-2633334	1999-08-28	서울	011-5248-7789	기획부	대리	1900000	170000
1005	한석봉	811112-1566789	2004-08-13	서울	018-5211-3542	총무부	사원	1420000	160000
1025	우재옥	801103-1654442	2000-10-01	서울	010-4563-2587	영업부	사원	1100000	160000
1043	양미옥	830504-2471523	2003-09-24	서울	016-8548-6547	영업부	사원	1100000	210000
1044	지수환	820305-1475286	2004-01-21	서울	011-5555-7548	영업부	사원	1060000	220000
1033	김미나	780505-2999999	1998-06-07	서울	011-2444-4444	영업부	사원	1020000	104000
1011	유관순	801010-2987897	2000-07-07	서울	010-8888-4422	영업부	사원	1020000	140000
1055	정한나	820506-2425153	2004-06-07	서울	016-2424-4242	영업부	사원	1000000	104000
1036	이재영	701126-2852147	2003-08-10	서울	011-9999-9999	자재부	사원	960400	190000
1008	김영년	821011-2362514	2002-04-30	서울	016-2222-4444	홍보부	사원	950000	145000
1029	김말숙	800301-2020202	2000-09-08	서울	016-3535-3636	총무부	사원	920000	124000
1060	김신애	810809-2111111	2001-10-10	서울	011-4151-4444	개발부	사원	900000	102000
1059	임수봉	810809-2121244	2001-10-10	서울	011-4151-4154	개발부	사원	890000	102000
1010	김종서	751010-1122233	1997-08-08	부산	011-3214-5555	영업부	부장	2540000	130000
1030	정정해	790210-2101010	1999-10-17	부산	019-6564-6752	총무부	과장	2304000	124000
1038	손인수	791009-2321456	1999-11-15	부산	010-6542-7412	영업부	대리	2000000	150000
1040	박세열	790509-1635214	2000-09-10	경북	016-4444-7777	인사부	대리	2100000	130000
1046	허경운	760105-1458752	1999-05-04	경남	017-3333-3333	총무부	부장	2650000	150000
1057	이미경	780406-2003214	1998-02-11	경기	016-6542-7546	자재부	부장	2520000	160000
1016	이상헌	781010-1666678	2001-11-29	경기	010-4526-1234	개발부	과장	2350000	150000
1039	고순정	800504-2000032	2003-12-28	경기	010-2587-7895	영업부	대리	2010000	160000
1050	이미인	810403-2828287	2003-06-07	경기	011-8585-5252	홍보부	대리	1950000	103000
1013	조미숙	790102-2777777	1998-06-07	경기	019-6666-4444	홍보부	대리	1601000	103000
1002	이순신	801007-1544236	2000-11-29	경기	010-4758-6532	총무부	사원	1320000	200000
1034	이정석	820505-1325468	2005-09-26	경기	011-3697-7412	기획부	사원	1100000	160000
1015	이현숙	800606-2954687	1999-07-26	경기	016-2548-3365	총무부	사원	1050000	104000
1026	김숙남	810907-2015457	2002-08-28	경기	010-2112-5225	영업부	사원	1050000	150000
1052	권옥경	820406-2000456	2000-10-10	경기	010-3644-5577	기획부	사원	1020000	105000
1042	채정희	810709-2000054	2003-10-17	경기	011-5125-5511	개발부	사원	1020000	200000
1021	홍길남	801010-1111111	2001-09-07	경기	011-9999-7575	개발부	사원	875000	120000
1009	나윤균	810810-1552147	2003-10-10	경기	019-1111-2222	인사부	사원	840000	220400
1054	정상호	810705-1212141	1999-10-16	강원	016-1919-4242	홍보부	사원	980000	114000
1012	정한국	760909-1333333	1999-10-16	강원	018-2222-4242	홍보부	사원	880000	114000
*/






--26. 서울 사람 중에서 기본급+수당(→급여) 내림차순으로 정렬.
--    ( 이름, 출신도, 기본급+수당 )
    
    
    
SELECT NAME "이름", CITY "출신도", BASICPAY + SUDANG "급여"
FROM TBL_INSA
WHERE CITY LIKE '서울'
ORDER BY 급여 DESC;
--==>>
/*
홍길동	서울	2810000
김인수	서울	2670000
지재환	서울	2610000
김영길	서울	2510000
박문수	서울	2465000
권영미	서울	2364000
산마루	서울	2212000
김말자	서울	2070000
한석봉	서울	1580000
양미옥	서울	1310000
지수환	서울	1280000
우재옥	서울	1260000
유관순	서울	1160000
이재영	서울	1150400
김미나	서울	1124000
정한나	서울	1104000
김영년	서울	1095000
김말숙	서울	1044000
김신애	서울	1002000
임수봉	서울	992000
*/
    
    
    



--27. 여자 중 부서 오름차순으로 정렬하고, 부서가 같으면 기본급 내림차순 정렬. 
--    ( 이름, 주민번호, 부서, 기본급 );


SELECT NAME "이름", SSN "주민번호", BUSEO "부서", BASICPAY "기본급"
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('2', '4')
ORDER BY 부서 ASC, 기본급 DESC;
--==>>
/*
이순애	770922-2312547	개발부	2550000
이기자	780505-2978541	개발부	2265000
이미성	830908-2456548	개발부	1300000
황진이	810707-2574812	개발부	1100000
정영희	831010-2153252	개발부	1050000
채정희	810709-2000054	개발부	1020000
김신애	810809-2111111	개발부	900000
임수봉	810809-2121244	개발부	890000
이영숙	800501-2312456	기획부	1960000
김말자	830225-2633334	기획부	1900000
권옥경	820406-2000456	기획부	1020000
권영미	790303-2155554	영업부	2260000
고순정	800504-2000032	영업부	2010000
손인수	791009-2321456	영업부	2000000
양미옥	830504-2471523	영업부	1100000
김숙남	810907-2015457	영업부	1050000
김미나	780505-2999999	영업부	1020000
유관순	801010-2987897	영업부	1020000
정한나	820506-2425153	영업부	1000000
이미경	780406-2003214	자재부	2520000
이재영	701126-2852147	자재부	960400
유영희	800304-2741258	자재부	880000
심심해	810206-2222222	자재부	880000
정정해	790210-2101010	총무부	2304000
이현숙	800606-2954687	총무부	1050000
김말숙	800301-2020202	총무부	920000
이미인	810403-2828287	홍보부	1950000
조미숙	790102-2777777	홍보부	1601000
김영년	821011-2362514	홍보부	950000
*/





-- 28. 남자 중 나이를 기준으로 오름차순 정렬하여 조회.

-- 나이구하기
--SELECT EXTRACT(YEAR FROM SYSDATE) - 1900 - (TO_NUMBER(SUBSTR(SSN, 1, 2))) + 1 "나이"
--FROM TBL_INSA

-- 너 남자니?
--WHERE SUBSTR(SSN, 8, 1) IN ('1', '3')

-- INNER JOIN 으로 구성.
SELECT *
FROM
TBL_INSA INSA
INNER JOIN 
(
    SELECT EXTRACT(YEAR FROM SYSDATE) - 1900 - (TO_NUMBER(SUBSTR(SSN, 1, 2))) + 1 "나이"
         , SSN "주민번호"
    FROM TBL_INSA
)T
ON INSA.SSN = T.주민번호
WHERE SUBSTR(SSN, 8, 1) IN ('1', '3')
ORDER BY T.나이 ASC;
-- 나이를 기준으로 오름차순 정렬하여 조회
--==>>
/*
1017	엄용수	820507-1452365	2000-08-28	인천	010-3254-2542	개발부	사원	950000	210000	42	820507-1452365
1044	지수환	820305-1475286	2004-01-21	서울	011-5555-7548	영업부	사원	1060000	220000	42	820305-1475286
1034	이정석	820505-1325468	2005-09-26	경기	011-3697-7412	기획부	사원	1100000	160000	42	820505-1325468
1054	정상호	810705-1212141	1999-10-16	강원	016-1919-4242	홍보부	사원	980000	114000	43	810705-1212141
1005	한석봉	811112-1566789	2004-08-13	서울	018-5211-3542	총무부	사원	1420000	160000	43	811112-1566789
1009	나윤균	810810-1552147	2003-10-10	경기	019-1111-2222	인사부	사원	840000	220400	43	810810-1552147
1028	이남신	810101-1010101	2001-09-07	제주	016-1818-4848	인사부	사원	892000	110000	43	810101-1010101
1058	김신제	800709-1321456	2003-08-08	인천	010-2415-5444	기획부	대리	1950000	180000	44	800709-1321456
1002	이순신	801007-1544236	2000-11-29	경기	010-4758-6532	총무부	사원	1320000	200000	44	801007-1544236
1056	전용재	800605-1456987	2004-08-13	인천	010-7549-8654	영업부	대리	1950000	200000	44	800605-1456987
1053	김싱식	800715-1313131	1999-12-12	전북	011-7585-7474	자재부	사원	960000	108000	44	800715-1313131
1027	김영길	801216-1898752	2000-10-18	서울	019-8523-1478	총무부	과장	2340000	170000	44	801216-1898752
1025	우재옥	801103-1654442	2000-10-01	서울	010-4563-2587	영업부	사원	1100000	160000	44	801103-1654442
1021	홍길남	801010-1111111	2001-09-07	경기	011-9999-7575	개발부	사원	875000	120000	44	801010-1111111
1018	이성길	801028-1849534	2004-08-08	전북	018-1333-3333	개발부	사원	880000	123000	44	801028-1849534
1004	김정훈	790304-1788896	2000-10-01	전북	019-5236-4221	영업부	대리	1954200	170000	45	790304-1788896
1048	이기상	790604-1415141	2001-06-07	전남		개발부	대리	2050000	106000	45	790604-1415141
1040	박세열	790509-1635214	2000-09-10	경북	016-4444-7777	인사부	대리	2100000	130000	45	790509-1635214
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000	46	780505-1234567
1016	이상헌	781010-1666678	2001-11-29	경기	010-4526-1234	개발부	과장	2350000	150000	46	781010-1666678
1007	장인철	780506-1625148	1998-03-16	제주	011-2345-2525	개발부	대리	1250000	150000	46	780506-1625148
1019	박문수	780710-1985632	1999-12-10	서울	017-4747-4848	인사부	과장	2300000	165000	46	780710-1985632
1031	지재환	771115-1687988	2001-01-21	서울	019-5552-7511	기획부	부장	2450000	160000	47	771115-1687988
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000	47	771212-1022432
1037	최석규	770129-1456987	1998-10-15	인천	011-7777-7777	홍보부	과장	2350000	187000	47	770129-1456987
1012	정한국	760909-1333333	1999-10-16	강원	018-2222-4242	홍보부	사원	880000	114000	48	760909-1333333
1046	허경운	760105-1458752	1999-05-04	경남	017-3333-3333	총무부	부장	2650000	150000	48	760105-1458752
1010	김종서	751010-1122233	1997-08-08	부산	011-3214-5555	영업부	부장	2540000	130000	49	751010-1122233
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000	51	731211-1214576
1041	문길수	721217-1951357	2001-12-10	충남	016-4444-5555	자재부	과장	2300000	150000	52	721217-1951357
1045	홍원신	690906-1985214	2003-03-16	전북	011-7777-7777	영업부	사원	960000	152000	55	690906-1985214
*/






-- 29. 서울 지역 사람들 중에서 입사일이 빠른 사람을 먼저 볼 수 있도록 조회.

SELECT *
FROM TBL_INSA
WHERE CITY LIKE '서울'
ORDER BY IBSADATE ASC;
--==>>
/*
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000
1033	김미나	780505-2999999	1998-06-07	서울	011-2444-4444	영업부	사원	1020000	104000
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000
1024	김말자	830225-2633334	1999-08-28	서울	011-5248-7789	기획부	대리	1900000	170000
1019	박문수	780710-1985632	1999-12-10	서울	017-4747-4848	인사부	과장	2300000	165000
1051	권영미	790303-2155554	2000-06-04	서울	011-5555-7548	영업부	과장	2260000	104000
1011	유관순	801010-2987897	2000-07-07	서울	010-8888-4422	영업부	사원	1020000	140000
1029	김말숙	800301-2020202	2000-09-08	서울	016-3535-3636	총무부	사원	920000	124000
1025	우재옥	801103-1654442	2000-10-01	서울	010-4563-2587	영업부	사원	1100000	160000
1027	김영길	801216-1898752	2000-10-18	서울	019-8523-1478	총무부	과장	2340000	170000
1031	지재환	771115-1687988	2001-01-21	서울	019-5552-7511	기획부	부장	2450000	160000
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000
1059	임수봉	810809-2121244	2001-10-10	서울	011-4151-4154	개발부	사원	890000	102000
1060	김신애	810809-2111111	2001-10-10	서울	011-4151-4444	개발부	사원	900000	102000
1008	김영년	821011-2362514	2002-04-30	서울	016-2222-4444	홍보부	사원	950000	145000
1036	이재영	701126-2852147	2003-08-10	서울	011-9999-9999	자재부	사원	960400	190000
1043	양미옥	830504-2471523	2003-09-24	서울	016-8548-6547	영업부	사원	1100000	210000
1044	지수환	820305-1475286	2004-01-21	서울	011-5555-7548	영업부	사원	1060000	220000
1055	정한나	820506-2425153	2004-06-07	서울	016-2424-4242	영업부	사원	1000000	104000
1005	한석봉	811112-1566789	2004-08-13	서울	018-5211-3542	총무부	사원	1420000	160000
*/





--30. 성씨가 김씨가 아닌 사람 조회. 
--    단, 성씨는 한 글자라고 가정.
--    ( 이름, 출신도, 기본급 );

SELECT NAME "이름", CITY "출신도", BASICPAY "기본급"
FROM TBL_INSA
WHERE SUBSTR(NAME, 1, 1) != '김';
--==>>
/*
홍길동	서울	2610000
이순신	경기	1320000
이순애	인천	2550000
한석봉	서울	1420000
이기자	인천	2265000
장인철	제주	1250000
나윤균	경기	840000
유관순	서울	1020000
정한국	강원	880000
조미숙	경기	1601000
황진이	인천	1100000
이현숙	경기	1050000
이상헌	경기	2350000
엄용수	인천	950000
이성길	전북	880000
박문수	서울	2300000
유영희	전남	880000
홍길남	경기	875000
이영숙	전남	1960000
우재옥	서울	1100000
이남신	제주	892000
정정해	부산	2304000
지재환	서울	2450000
심심해	전북	880000
이정석	경기	1100000
정영희	인천	1050000
이재영	서울	960400
최석규	인천	2350000
손인수	부산	2000000
고순정	경기	2010000
박세열	경북	2100000
문길수	충남	2300000
채정희	경기	1020000
양미옥	서울	1100000
지수환	서울	1060000
홍원신	전북	960000
허경운	경남	2650000
산마루	서울	2100000
이기상	전남	2050000
이미성	인천	1300000
이미인	경기	1950000
권영미	서울	2260000
권옥경	경기	1020000
정상호	강원	980000
정한나	서울	1000000
전용재	인천	1950000
이미경	경기	2520000
임수봉	서울	890000
*/




--31. 출신도가 서울, 부산, 대구 이면서
--    전화번호에 5 또는 7이 포함된 데이터를 조회하되
--    부서명의 마지막 부는 출력되지 않도록함. (개발부 → 개발)
--    ( 이름, 출신도, 부서명, 전화번호 );


-- #1 출신도가 서울, 부산, 대구
SELECT NAME "이름", CITY "출신도", BUSEO "부서", TEL "전화번호"
FROM TBL_INSA
WHERE CITY IN ('서울', '부산', '대구');


-- #2 전화번호에 5 또는 7이 포함

SELECT TEL
FROM TBL_INSA
WHERE SUBSTR(TEL, 5, 9) LIKE '%5%'
      OR
      SUBSTR(TEL, 5, 9) LIKE '%7%';

-- #3 부서명의 마지막 부는 출력되지 않도록함. (개발부 → 개발)

SELECT SUBSTR(BUSEO, 1, 2) "부서"
FROM TBL_INSA;


-- #4 최종 결과

SELECT NAME "이름", CITY "출신도", SUBSTR(BUSEO, 1, 2) "부서명", TEL "전화번호"
FROM TBL_INSA
WHERE CITY IN ('서울', '부산', '대구')
      AND
      SUBSTR(TEL, 5, 9) LIKE '%5%'
      OR
      SUBSTR(TEL, 5, 9) LIKE '%7%';
--==>>
/*
홍길동	서울	기획	011-2356-4528
이순신	경기	총무	010-4758-6532
한석봉	서울	총무	018-5211-3542
이기자	인천	개발	010-3214-5357
김종서	부산	영업	011-3214-5555
황진이	인천	개발	010-3214-5467
박문수	서울	인사	017-4747-4848
홍길남	경기	개발	011-9999-7575
김말자	서울	기획	011-5248-7789
우재옥	서울	영업	010-4563-2587
김영길	서울	총무	019-8523-1478
김말숙	서울	총무	016-3535-3636
정정해	부산	총무	019-6564-6752
지재환	서울	기획	019-5552-7511
심심해	전북	자재	016-8888-7474
이정석	경기	기획	011-3697-7412
최석규	인천	홍보	011-7777-7777
손인수	부산	영업	010-6542-7412
고순정	경기	영업	010-2587-7895
박세열	경북	인사	016-4444-7777
양미옥	서울	영업	016-8548-6547
지수환	서울	영업	011-5555-7548
홍원신	전북	영업	011-7777-7777
산마루	서울	영업	018-0505-0505
권영미	서울	영업	011-5555-7548
권옥경	경기	기획	010-3644-5577
김싱식	전북	자재	011-7585-7474
전용재	인천	영업	010-7549-8654
이미경	경기	자재	016-6542-7546
임수봉	서울	개발	011-4151-4154
김신애	서울	개발	011-4151-4444
*/








--32. 전화번호가 있으면 '-'을 제거하여 조회하고, 
--    없으면 '전화번호없음'으로 조회.
    

--SELECT TEL
--FROM TBL_INSA;

-- 전화번호 쪼개서 '-' 없애기   
--SELECT SUBSTR(TEL, 0, 3) || SUBSTR(TEL, 5, 4) || SUBSTR(TEL, 10, 4) "전화번호"
--FROM TBL_INSA;    

SELECT NVL(T.전화번호, '전화번호없음') "전화번호"
FROM
(        
    SELECT SUBSTR(TEL, 0, 3) || SUBSTR(TEL, 5, 4) || SUBSTR(TEL, 10, 4) "전화번호"
    FROM TBL_INSA
) T;
--==>>
/*
01123564528
01047586532
01042311236
01952364221
01852113542
01032145357
01123452525
01622224444
01911112222
01132145555
01088884422
01822224242
01966664444
01032145467
01625483365
01045261234
01032542542
01813333333
01747474848
01195958585
01199997575
01752145282
전화번호없음
01152487789
01045632587
01021125225
01985231478
01618184848
01635353636
01965646752
01955527511
01688887474
01124444444
01136977412
전화번호없음
01199999999
01177777777
01065427412
01025877895
01644447777
01644445555
01151255511
01685486547
01155557548
01177777777
01733333333
01805050505
전화번호없음
01066548854
01185855252
01155557548
01036445577
01175857474
01619194242
01624244242
01075498654
01665427546
01024155444
01141514154
01141514444
*/
    
    
    
    

추가문제. (기본 문제 풀이가 모두 끝난 후 작성한다.)
          HR계정의 EMPLOYEES 테이블에서 커미션 받는 사람의 수와
          안받는 사람의 수를 조회한다.
          출력형태 ---------------
              구분        인원수
          ------------------------
          커미션받는사원    XXX
          커미션없는사원    XXX
          모든사원          XXX









--33. TBL_INSA 테이블에서 BASICPAY + SUDANG 이 
--    100만원 미만, 100만원 이상~200만원 미만, 
--    200만원 이상인 직원들의 수 조회.



--SELECT BASICPAY + SUDANG "급여"
--FROM TBL_INSA;

--테스트
--SELECT ROUND(BASICPAY + SUDANG, -6) "급여"
--        , BASICPAY + SUDANG "이게 진짜 급여"
--FROM TBL_INSA;


SELECT T.급여
     , COUNT(*) "해당급여를받는직원수"
FROM
(
  SELECT ROUND(BASICPAY + SUDANG, -6) "급여"
        , SSN "주민번호"
  FROM TBL_INSA
)T
GROUP BY T.급여;
--==>>
/*
1000000	31
3000000	10
2000000	19
*/




--34. TBL_INSA 테이블에서 주민번호를 가지고 생년월일의 ★년도별★ 직원수 조회.



-- 생년월일 'YYYY-MM-DD' 형식으로 구하기
--SELECT CONCAT('19', SUBSTR(SSN, 1, 6)) "생년월일"
--FROM TBL_INSA
--WHERE SUBSTR(SSN, 8, 1) IN ('1', '2');

-- 아 년도별이지... 아 죄송해요...ㅠㅠ
--SELECT BIRTH.생년월일, COUNT(*)
--FROM
--(
--    SELECT CONCAT('19', SUBSTR(SSN, 1, 6)) "생년월일"
--    FROM TBL_INSA
--    WHERE SUBSTR(SSN, 8, 1) IN ('1', '2')
--) BIRTH
--GROUP BY BIRTH.생년월일;



-- 생년 'YYYY' 구하기
SELECT CONCAT('19', SUBSTR(SSN, 1, 2)) "생년"
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('1', '2');


-- 생년 별 직원 수 구하기.
SELECT BIRTH.생년
     , COUNT(*) "직원수"
FROM
(
    SELECT CONCAT('19', SUBSTR(SSN, 1, 2)) "생년"
    FROM TBL_INSA
    WHERE SUBSTR(SSN, 8, 1) IN ('1', '2')
) BIRTH
GROUP BY BIRTH.생년;
--==>>
/*
생년	    직원수
1970	1
1977	4
1980	14
1976	2
1983	4
1982    	6
1969	1
1979	7
1978	7
1975	1
1972	    1
1981	11
1973	1
*/



--35. 주민번호를 기준으로 월별 오름차순, 월이 같으면 년도 내림차순 조회.
--    (이름, 주민번호);
    
-- 월, 년도 구하기
--SELECT TO_NUMBER(SUBSTR(SSN, 3, 2)) "월"
--     , TO_NUMBER(SUBSTR(SSN, 1, 2)) "년도"
--     , SSN "주민번호" -- 테이블 결합 조건으로 쓰고 싶어서 넣었어요...
--FROM TBL_INSA;




-- (이름, 주민번호)
SELECT TI.NAME, TI.SSN
FROM TBL_INSA TI
INNER JOIN
(
     SELECT TO_NUMBER(SUBSTR(SSN, 3, 2)) "월"
         , TO_NUMBER(SUBSTR(SSN, 1, 2)) "년도"
         , SSN "주민번호"
    FROM TBL_INSA   
)B
ON TI.SSN = B.주민번호
ORDER BY B.월 ASC, B.년도 DESC;
-- 주민번호를 기준으로 월별 오름차순, 월이 같으면 년도 내림차순 조회.
--==>>
/*
이남신	810101-1010101
조미숙	790102-2777777
최석규	770129-1456987
허경운	760105-1458752
김말자	830225-2633334
심심해	810206-2222222
정정해	790210-2101010
지수환	820305-1475286
유영희	800304-2741258
김말숙	800301-2020202
김정훈	790304-1788896
권영미	790303-2155554
권옥경	820406-2000456
이미인	810403-2828287
이미경	780406-2003214
양미옥	830504-2471523
엄용수	820507-1452365
정한나	820506-2425153
이정석	820505-1325468
고순정	800504-2000032
이영숙	800501-2312456
박세열	790509-1635214
산마루	780505-1234567
김미나	780505-2999999
이기자	780505-2978541
장인철	780506-1625148
전용재	800605-1456987
이현숙	800606-2954687
이기상	790604-1415141
채정희	810709-2000054
정상호	810705-1212141
황진이	810707-2574812
김신제	800709-1321456
김싱식	800715-1313131
박문수	780710-1985632
나윤균	810810-1552147
임수봉	810809-2121244
김신애	810809-2111111
이미성	830908-2456548
김숙남	810907-2015457
이순애	770922-2312547
정한국	760909-1333333
홍원신	690906-1985214
정영희	831010-2153252
김영년	821011-2362514
이성길	801028-1849534
홍길남	801010-1111111
이순신	801007-1544236
유관순	801010-2987897
손인수	791009-2321456
이상헌	781010-1666678
김종서	751010-1122233
한석봉	811112-1566789
우재옥	801103-1654442
지재환	771115-1687988
이재영	701126-2852147
김영길	801216-1898752
홍길동	771212-1022432
김인수	731211-1214576
문길수	721217-1951357
*/





--36. 입사일을 기준으로  월별 오름차순, 월이 같으면 년도 내림차순 조회.
--    단, 모든 정보 조회.
--    (주의. 입사일은 자료형이 DATE이다.);

-- 입사일 IBSADATE

--SELECT IBSADATE
--FROM TBL_INSA;

-- 입사월, 입사년도 구하기.
--SELECT TO_CHAR(IBSADATE, 'MM') "입사월"
--     , TO_CHAR(IBSADATE, 'YYYY') "입사년도"
--     , SSN "주민번호" 
--FROM TBL_INSA;


-- 단, 모든 정보 조회.
SELECT TI.*
FROM TBL_INSA TI
INNER JOIN
(
    SELECT TO_CHAR(IBSADATE, 'MM') "입사월"
     , TO_CHAR(IBSADATE, 'YYYY') "입사년도"
     , SSN "주민번호" 
    FROM TBL_INSA
)IBSA
ON TI.SSN = IBSA.주민번호
ORDER BY IBSA.입사월 ASC, IBSA.입사년도 DESC;
-- 입사일을 기준으로  월별 오름차순, 월이 같으면 년도 내림차순 조회.


--==>>
/*
1044	지수환	820305-1475286	2004-01-21	서울	011-5555-7548	영업부	사원	1060000	220000
1031	지재환	771115-1687988	2001-01-21	서울	019-5552-7511	기획부	부장	2450000	160000
1022	이영숙	800501-2312456	2003-02-25	전남	017-5214-5282	기획부	대리	1960000	180000
1006	이기자	780505-2978541	2002-02-11	인천	010-3214-5357	개발부	과장	2265000	150000
1014	황진이	810707-2574812	2002-02-15	인천	010-3214-5467	개발부	사원	1100000	130000
1003	이순애	770922-2312547	1999-02-25	인천	010-4231-1236	개발부	부장	2550000	160000
1057	이미경	780406-2003214	1998-02-11	경기	016-6542-7546	자재부	부장	2520000	160000
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000
1045	홍원신	690906-1985214	2003-03-16	전북	011-7777-7777	영업부	사원	960000	152000
1007	장인철	780506-1625148	1998-03-16	제주	011-2345-2525	개발부	대리	1250000	150000
1008	김영년	821011-2362514	2002-04-30	서울	016-2222-4444	홍보부	사원	950000	145000
1049	이미성	830908-2456548	2000-04-07	인천	010-6654-8854	개발부	사원	1300000	130000
1035	정영희	831010-2153252	2002-05-16	인천		개발부	사원	1050000	140000
1032	심심해	810206-2222222	2000-05-05	전북	016-8888-7474	자재부	사원	880000	108000
1046	허경운	760105-1458752	1999-05-04	경남	017-3333-3333	총무부	부장	2650000	150000
1055	정한나	820506-2425153	2004-06-07	서울	016-2424-4242	영업부	사원	1000000	104000
1050	이미인	810403-2828287	2003-06-07	경기	011-8585-5252	홍보부	대리	1950000	103000
1048	이기상	790604-1415141	2001-06-07	전남		개발부	대리	2050000	106000
1051	권영미	790303-2155554	2000-06-04	서울	011-5555-7548	영업부	과장	2260000	104000
1033	김미나	780505-2999999	1998-06-07	서울	011-2444-4444	영업부	사원	1020000	104000
1013	조미숙	790102-2777777	1998-06-07	경기	019-6666-4444	홍보부	대리	1601000	103000
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000
1011	유관순	801010-2987897	2000-07-07	서울	010-8888-4422	영업부	사원	1020000	140000
1015	이현숙	800606-2954687	1999-07-26	경기	016-2548-3365	총무부	사원	1050000	104000
1056	전용재	800605-1456987	2004-08-13	인천	010-7549-8654	영업부	대리	1950000	200000
1018	이성길	801028-1849534	2004-08-08	전북	018-1333-3333	개발부	사원	880000	123000
1005	한석봉	811112-1566789	2004-08-13	서울	018-5211-3542	총무부	사원	1420000	160000
1058	김신제	800709-1321456	2003-08-08	인천	010-2415-5444	기획부	대리	1950000	180000
1036	이재영	701126-2852147	2003-08-10	서울	011-9999-9999	자재부	사원	960400	190000
1026	김숙남	810907-2015457	2002-08-28	경기	010-2112-5225	영업부	사원	1050000	150000
1017	엄용수	820507-1452365	2000-08-28	인천	010-3254-2542	개발부	사원	950000	210000
1024	김말자	830225-2633334	1999-08-28	서울	011-5248-7789	기획부	대리	1900000	170000
1010	김종서	751010-1122233	1997-08-08	부산	011-3214-5555	영업부	부장	2540000	130000
1034	이정석	820505-1325468	2005-09-26	경기	011-3697-7412	기획부	사원	1100000	160000
1043	양미옥	830504-2471523	2003-09-24	서울	016-8548-6547	영업부	사원	1100000	210000
1021	홍길남	801010-1111111	2001-09-07	경기	011-9999-7575	개발부	사원	875000	120000
1028	이남신	810101-1010101	2001-09-07	제주	016-1818-4848	인사부	사원	892000	110000
1029	김말숙	800301-2020202	2000-09-08	서울	016-3535-3636	총무부	사원	920000	124000
1040	박세열	790509-1635214	2000-09-10	경북	016-4444-7777	인사부	대리	2100000	130000
1020	유영희	800304-2741258	2003-10-10	전남	011-9595-8585	자재부	사원	880000	140000
1009	나윤균	810810-1552147	2003-10-10	경기	019-1111-2222	인사부	사원	840000	220400
1042	채정희	810709-2000054	2003-10-17	경기	011-5125-5511	개발부	사원	1020000	200000
1059	임수봉	810809-2121244	2001-10-10	서울	011-4151-4154	개발부	사원	890000	102000
1060	김신애	810809-2111111	2001-10-10	서울	011-4151-4444	개발부	사원	900000	102000
1025	우재옥	801103-1654442	2000-10-01	서울	010-4563-2587	영업부	사원	1100000	160000
1027	김영길	801216-1898752	2000-10-18	서울	019-8523-1478	총무부	과장	2340000	170000
1004	김정훈	790304-1788896	2000-10-01	전북	019-5236-4221	영업부	대리	1954200	170000
1052	권옥경	820406-2000456	2000-10-10	경기	010-3644-5577	기획부	사원	1020000	105000
1012	정한국	760909-1333333	1999-10-16	강원	018-2222-4242	홍보부	사원	880000	114000
1030	정정해	790210-2101010	1999-10-17	부산	019-6564-6752	총무부	과장	2304000	124000
1054	정상호	810705-1212141	1999-10-16	강원	016-1919-4242	홍보부	사원	980000	114000
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000
1037	최석규	770129-1456987	1998-10-15	인천	011-7777-7777	홍보부	과장	2350000	187000
1016	이상헌	781010-1666678	2001-11-29	경기	010-4526-1234	개발부	과장	2350000	150000
1002	이순신	801007-1544236	2000-11-29	경기	010-4758-6532	총무부	사원	1320000	200000
1038	손인수	791009-2321456	1999-11-15	부산	010-6542-7412	영업부	대리	2000000	150000
1039	고순정	800504-2000032	2003-12-28	경기	010-2587-7895	영업부	대리	2010000	160000
1041	문길수	721217-1951357	2001-12-10	충남	016-4444-5555	자재부	과장	2300000	150000
1053	김싱식	800715-1313131	1999-12-12	전북	011-7585-7474	자재부	사원	960000	108000
1019	박문수	780710-1985632	1999-12-10	서울	017-4747-4848	인사부	과장	2300000	165000
*/






--37. 전체인원수, 남자인원수, 여자인원수를 동시 조회.


-- #1 전체 인원수 구하기

SELECT COUNT(*)
FROM TBL_INSA;


-- #2 남자 인원수 구하기

SELECT COUNT(*)
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('1', '3');


-- #3 여자 인원수 구하기

SELECT COUNT(*)
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('2', '4');


-- #4 상단 서브 쿼리 스칼라 서브 쿼리 사용.
-- 전체인원수, 남자인원수, 여자인원수를 동시 조회.

SELECT  (
            SELECT COUNT(*)
            FROM TBL_INSA
        )   "전체인원수"
        , 
        (
            SELECT COUNT(*)
            FROM TBL_INSA
            WHERE SUBSTR(SSN, 8, 1) IN ('1', '3')
        )   "남자인원수"
        ,
        (
            SELECT COUNT(*)
            FROM TBL_INSA
            WHERE SUBSTR(SSN, 8, 1) IN ('2', '4')
        )   "여자인원수"
FROM DUAL;
--==>>
/*
전체인원수	남자인원수	여자인원수
60	        31	        29
*/






--38. 개발부, 영업부, 총무부 인원수 조회.  COUNT(), DECODE() 함수 이용.


---- 아래와 같은 형식으로 구성해야 함...
--DECODE(BUSEO, '개발부', 개발부인원수, '영업부', 영업부인원수, '총무부', 총무부인원수);
--
--
--
--
---- #1 개발부 인원수 조회
--SELECT COUNT(*)
--FROM TBL_INSA
--WHERE BUSEO LIKE '개발부';
--
--
---- #2 영업부 인원수 조회
--SELECT COUNT(*)
--FROM TBL_INSA
--WHERE BUSEO LIKE '영업부';
--
--
---- #3 총무부 인원수 조회
--SELECT COUNT(*)
--FROM TBL_INSA
--WHERE BUSEO LIKE '총무부';

-- #4 최종 결과 
--    인원수를 나타내는 쿼리문을 하나로 통합. CROSS JOIN (92)

SELECT DISTINCT TI.BUSEO "부서명"
              , DECODE(TI.BUSEO, '개발부', G.개발부인원수
                               , '영업부', Y.영업부인원수
                               , '총무부', C.총무부인원수, NULL) "부서별인원수"
      -- G.개발부인원수, Y.영업부인원수, C.총무부인원수
FROM
TBL_INSA TI
,
(
    SELECT COUNT(*) "개발부인원수"
    FROM TBL_INSA
    WHERE BUSEO LIKE '개발부'
) G
,

(
    SELECT COUNT(*) "영업부인원수"
    FROM TBL_INSA
    WHERE BUSEO LIKE '영업부'
) Y
,
(
    SELECT COUNT(*) "총무부인원수"
    FROM TBL_INSA
    WHERE BUSEO LIKE '총무부'
) C
-- NULL 은 결과에서 제외.
WHERE DECODE(TI.BUSEO, '개발부', G.개발부인원수
                     , '영업부', Y.영업부인원수
                     , '총무부', C.총무부인원수, NULL) IS NOT NULL
ORDER BY 1 ASC; -- 그냥 오름차순...






--39. 서울 사람의 남자 인원수 조회.

SELECT COUNT(*) "서울남자인원수"
FROM TBL_INSA
WHERE CITY LIKE '서울'
      AND
      SUBSTR(SSN, 8, 1) IN ('1', '3');
--==>> 9




--40. 부서가 영업부이고, 남자 인원수, 여자 인원수 조회.  COUNT(), DECODE() 함수 이용.





-- #1 영업부 남자 인원수

SELECT COUNT(*) "영업부남자인원수"
FROM TBL_INSA
WHERE BUSEO LIKE '영업부'
      AND
      SUBSTR(SSN, 8, 1) IN ('1', '3');
      
      
-- #2 영업부 여자 인원수

SELECT COUNT(*) "영업부여자인원수"
FROM TBL_INSA
WHERE BUSEO LIKE '영업부'
      AND
      SUBSTR(SSN, 8, 1) IN ('2', '4');


SELECT DISTINCT CASE WHEN SUBSTR(TI.SSN, 8, 1) IN ('1', '3')
                     THEN '남자'
                     WHEN SUBSTR(TI.SSN, 8, 1) IN ('2', '4')
                     THEN '여자'
                     ELSE '알수없음'
                END "성별"
                , DECODE(SUBSTR(TI.SSN, 8, 1), '1', YM.영업부남자인원수
                               , '2', YW.영업부여자인원수
                               , NULL) "영업부남녀인원수"
FROM TBL_INSA TI
,
(
    SELECT COUNT(*) "영업부남자인원수"
    FROM TBL_INSA
    WHERE BUSEO LIKE '영업부'
          AND
          SUBSTR(SSN, 8, 1) IN ('1', '3')
) YM
,
(
    SELECT COUNT(*) "영업부여자인원수"
    FROM TBL_INSA
    WHERE BUSEO LIKE '영업부'
          AND
          SUBSTR(SSN, 8, 1) IN ('2', '4')
) YW;

--==>>
/*
성별  	영업부남녀인원수
남자  	8
여자  	8
*/

-- 취소취소

---- 주민번호 8번째 자리가 1이면 남자, 2이면 여자.
--SELECT DECODE(SUBSTR(SSN, 8, 1), '1' OR '3', 남자)
--     , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
--            THEN '남자'
--            WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
--            THEN '여자'
--        END "인원수"
--     , COUNT(*)
--FROM TBL_INSA
--WHERE BUSEO LIKE '영업부'
--GROUP BY SUBSTR(SSN, 8, 1)
--ORDER BY SUBSTR(SSN, 8, 1) ASC;
--
--
--
--SELECT DECODE(SUBSTR(SSN, 8, 1), '1', '남자')
--FROM TBL_INSA;




--41. 개발부, 영업부, 총무부 인원수 조회. 단, 지역은 '서울'로 한정.



-- #1 서울 개발부 인원수 조회
SELECT COUNT(*)
FROM TBL_INSA
WHERE BUSEO LIKE '개발부'
      AND
      CITY LIKE '서울';

--==>> 2

-- #2 서울 영업부 인원수 조회
SELECT COUNT(*)
FROM TBL_INSA
WHERE BUSEO LIKE '영업부'
      AND
      CITY LIKE '서울';

--==>> 9


-- #3 서울 총무부 인원수 조회
SELECT COUNT(*)
FROM TBL_INSA
WHERE BUSEO LIKE '총무부'
      AND
      CITY LIKE '서울';

--==>> 3


-- #4 위의 쿼리문을 서브 상단 쿼리로 이용.


SELECT 
       (
            SELECT COUNT(*)
            FROM TBL_INSA
            WHERE BUSEO LIKE '개발부'
                  AND
                  CITY LIKE '서울'
       ) "서울개발부인원수"
       ,
       (
            SELECT COUNT(*)
            FROM TBL_INSA
            WHERE BUSEO LIKE '영업부'
                  AND
                  CITY LIKE '서울'
        
       ) "서울영업부인원수"
       ,
       (
            SELECT COUNT(*)
            FROM TBL_INSA
            WHERE BUSEO LIKE '총무부'
                  AND
                  CITY LIKE '서울'
       ) "서울총무부인원수"
FROM DUAL;
--==>>
/*
서울개발부인원수	서울영업부인원수	서울총무부인원수
2	            9	            3
*/




--42. 서울 사람의 남자와 여자의 기본급합 조회.


--SELECT 
--FROM TBL_INSA
--WHERE SUBSTR(SSN, 8, 1) IN ('1', '3');



--SELECT CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
--                     THEN '남자'
--                     WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
--                     THEN '여자'
--                     ELSE '알수없음'
--                END "성별"
--FROM TBL_INSA

-- 취소취소취소
--SELECT GD.성별
--FROM TBL_INSA TI
--INNER JOIN
--(
--    SELECT CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
--                     THEN '남자'
--                     WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
--                     THEN '여자'
--                     ELSE '알수없음'
--                END "성별"
--            , SSN "주민번호"
--    FROM TBL_INSA
--) GD
--ON TI.SSN = GD.주민번호
--GROUP BY GD.성별;


-- 서울 사람의 남자와 여자의 기본급합 조회.

-- #1 서울 사람의 남자 기본급합
SELECT SUM(BASICPAY)
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('1', '3')
      AND
      CITY LIKE '서울';


-- #2 서울 사람의 여자 기본급합
SELECT SUM(BASICPAY)
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('2', '4')
      AND
      CITY LIKE '서울';


-- #3 상단 서브 쿼리(스칼라 서브 쿼리)로 구성.


SELECT (
         SELECT SUM(BASICPAY)
         FROM TBL_INSA
         WHERE SUBSTR(SSN, 8, 1) IN ('1', '3')
              AND
              CITY LIKE '서울'
       ) "서울남자기본급합"
       ,
       (
         SELECT SUM(BASICPAY)
         FROM TBL_INSA
         WHERE SUBSTR(SSN, 8, 1) IN ('2', '4')
              AND
              CITY LIKE '서울'
       ) "서울여자기본급합"
FROM DUAL;

--==>>
/*
서울남자기본급합	서울여자기본급합
17880000	    12920400
*/







--43. 남자와 여자의 기본급 평균값 조회. AVG(), DECODE() 함수 이용.


-- #1 남자의 기본급 평균값 (소수점 두 번째 자리까지 표현)

SELECT ROUND(AVG(BASICPAY), 2)
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('1', '3');
--==>> 1676167.74

-- #2 여자의 기본급 평균값 (소수점 두 번째 자리까지 표현)

SELECT ROUND(AVG(BASICPAY), 2)
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('2', '4');
--==>> 1428634.48


-- #3 최종 결과
--    두 쿼리문을 외부(메인)쿼리문에 INNER JOIN 한다.

-- 남자와 여자의 기본급 평균값 조회. AVG(), DECODE() 함수 이용.

-- DECODE() 를 다음과 같이 구성해야함.
-- DECODE(SUBSTR(SSN, 8, 1), '1', 서울남자평균기본급, '2', 서울여자평균기본급)

SELECT DISTINCT 
        CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                     THEN '남자'
                     WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                     THEN '여자'
                     ELSE '알수없음'
              END "성별"
       , DECODE(SUBSTR(SSN, 8, 1), '1', SMP.서울남자평균기본급, '2', SWP.서울여자평균기본급) "서울성별기본급"
FROM TBL_INSA TI
,
(   
    SELECT ROUND(AVG(BASICPAY), 2) "서울남자평균기본급"
    FROM TBL_INSA
    WHERE SUBSTR(SSN, 8, 1) IN ('1', '3')
) SMP
,
(
    SELECT ROUND(AVG(BASICPAY), 2) "서울여자평균기본급"
    FROM TBL_INSA 
    WHERE SUBSTR(SSN, 8, 1) IN ('2', '4')
) SWP;

--==>>
/*
성별	    서울성별기본급
남자  	1676167.74
여자	    1428634.48
*/






--44. 개발부의 남자, 여자 기본급 평균값 조회.

-- #1 개발부, 성별로 그룹화
SELECT BUSEO
     , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                     THEN '남자'
                     WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                     THEN '여자'
                     ELSE '알수없음'
              END "성별"
    , AVG(BASICPAY) "기본급 평균값"
FROM TBL_INSA
GROUP BY BUSEO, SUBSTR(SSN, 8, 1)
HAVING BUSEO LIKE '개발부';

--==>>
/*
BUSEO	성별	    기본급 평균값
개발부	여자	    1384375
개발부	남자	    1392500
*/






--45. 부서별 남자와 여자 인원수 구하기

-- #1 부서, 성별로 그룹화.


SELECT  BUSEO "부서명"
      , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                 THEN '남자'
                 WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                 THEN '여자'
                 ELSE '알수없음'
         END "성별"
      , COUNT(*) "인원수"
FROM TBL_INSA
GROUP BY BUSEO, SUBSTR(SSN, 8, 1)
ORDER BY BUSEO ASC;

--==>>
/*
부서명	성별  	인원수
개발부	남자  	6
개발부	여자  	8
기획부	남자  	4
기획부	여자  	3
영업부	남자  	8
영업부	여자  	8
인사부	남자  	4
자재부	남자  	2
자재부	여자  	4
총무부	남자  	4
총무부	여자  	3
홍보부	남자  	3
홍보부	여자  	3
*/






--46. 지역별 남자와 여자 인원수 구하기


SELECT  CITY "출신도"
      , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                 THEN '남자'
                 WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                 THEN '여자'
                 ELSE '알수없음'
         END "성별"
      , COUNT(*) "인원수"
FROM TBL_INSA
GROUP BY CITY, SUBSTR(SSN, 8, 1)
ORDER BY CITY ASC;
--==>>
/*
출신도	성별	    인원수
강원	    남자  	2
경기	    남자  	5
경기	    여자	    8
경남	    남자	    1
경북	    남자	    1
부산  	남자	    1
부산  	여자  	2
서울	    남자  	9
서울	    여자  	11
인천	    남자  	4
인천	    여자	    5
전남  	남자  	1
전남  	여자  	2
전북	    남자  	4
전북	    여자  	1
제주	    남자  	2
충남  	남자  	1
*/








--47. 입사년도별 남자와 여자 인원수 구하기


SELECT *
FROM TBL_INSA;


SELECT  EXTRACT(YEAR FROM IBSADATE) "입사년도"
      , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                 THEN '남자'
                 WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                 THEN '여자'
                 ELSE '알수없음'
         END "성별"
      , COUNT(*) "인원수"
FROM TBL_INSA
GROUP BY EXTRACT(YEAR FROM IBSADATE), SUBSTR(SSN, 8, 1)
ORDER BY EXTRACT(YEAR FROM IBSADATE) ASC;

--==>>
/*
입사년도	성별	인원수
1995	남자	1
1997	남자	1
1998	남자	3
1998	여자	3
1999	남자	5
1999	여자	5
2000	남자	6
2000	여자	6
2001	남자	7
2001	여자	2
2002	여자	5
2003	남자	3
2003	여자	7
2004	남자	4
2004	여자	1
2005	남자	1

*/



--48. 영업부, 총무부 인원만을 가지고 입사년도별 남자와 여자 인원수 구하기


SELECT  
      EXTRACT(YEAR FROM IBSADATE) "입사년도"
      , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                 THEN '남자'
                 WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                 THEN '여자'
                 ELSE '알수없음'
         END "성별"
        -- , BUSEO "부서가 맞는지 확인"
      , COUNT(*) "인원수"
FROM TBL_INSA
WHERE BUSEO IN ('영업부', '총무부')
GROUP BY  EXTRACT(YEAR FROM IBSADATE), SUBSTR(SSN, 8, 1)
ORDER BY EXTRACT(YEAR FROM IBSADATE) ASC;
--==>>
/*
입사년도	성별	인원수
1995	남자	1
1997	남자	1
1998	여자	1
1999	남자	1
1999	여자	3
2000	남자	4
2000	여자	3
2001	남자	1
2002	여자	1
2003	남자	1
2003	여자	2
2004	남자	3
2004	여자	1
*/




--49. 서울 사람중 부서별 남자와 여자인원수, 남자와 여자 급여합 조회.

SELECT BUSEO "부서명"
      , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                 THEN '남자'
                 WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                 THEN '여자'
                 ELSE '알수없음'
         END "성별"
      , COUNT(*) "인원수"
      , SUM(BASICPAY + SUDANG) "급여합"
      
FROM TBL_INSA
WHERE CITY LIKE '서울'
GROUP BY BUSEO, SUBSTR(SSN, 8, 1)
ORDER BY 부서명 ASC, 성별 ASC;
--==>>
/*
부서명	성별	인원수	급여합
개발부	여자	2	1994000
기획부	남자	2	5420000
기획부	여자	1	2070000
영업부	남자	4	7422000
영업부	여자	5	7062000
인사부	남자	1	2465000
자재부	여자	1	1150400
총무부	남자	2	4090000
총무부	여자	1	1044000
홍보부	여자	1	1095000
*/




--50. 부서별 인원수 출력. 인원수가 10 이상인 경우만.


SELECT BUSEO "부서명"
     , COUNT(*) "인원수"
FROM TBL_INSA
GROUP BY BUSEO
HAVING COUNT(*) >= 10;
--==>>
/*
부서명	인원수
개발부	14
영업부	16
*/




--51. 부서별 남,여 인원수 출력. 여자인원수가 5명 이상인 부서만 조회.



-- #1 부서들 중, 여자의 인원 수가 5명 이상인 부서명 찾기.


SELECT INWON.부서명, INWON.성별, COUNT(INWON.성별) "인원수"
    FROM
    (
        SELECT BUSEO "부서명"
           , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                     THEN '남자'
                     WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                     THEN '여자'
                     ELSE '알수없음'
             END "성별"
        FROM TBL_INSA
    ) INWON
    GROUP BY INWON.부서명, INWON.성별
    HAVING INWON.성별 = '여자'
           AND
           COUNT(INWON.성별) >= 5;

--==>>
/*
부서명	성별	인원수
영업부	여자	8
개발부	여자	8
*/


-- #2 위의 쿼리를 다시 서브쿼리로 삼아서, 부서명만 SELECT 하도록 처리.
SELECT TAKEBUSEO.부서명
FROM
(
    SELECT INWON.부서명, INWON.성별, COUNT(INWON.성별) "인원수"
    FROM
    (
        SELECT BUSEO "부서명"
           , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                     THEN '남자'
                     WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                     THEN '여자'
                     ELSE '알수없음'
             END "성별"
        FROM TBL_INSA
    ) INWON
    GROUP BY INWON.부서명, INWON.성별
    HAVING INWON.성별 = '여자'
           AND
           COUNT(INWON.성별) >= 5
) TAKEBUSEO;
--==>>
/*
부서명
영업부
개발부
*/



-- #3 최종적으로, 여자 인원수가 5명 이상인 부서별 남, 여 인원수 조회.
--    부서별 남,여 인원수 출력. 여자인원수가 5명 이상인 부서만 조회.
SELECT INWON.부서명, INWON.성별, COUNT(INWON.성별) "인원수"
FROM
(
    SELECT BUSEO "부서명"
       , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                 THEN '남자'
                 WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                 THEN '여자'
                 ELSE '알수없음'
         END "성별"
    FROM TBL_INSA
    WHERE BUSEO
      IN
        (
            SELECT TAKEBUSEO.부서명
            FROM
            (
                SELECT INWON.부서명, INWON.성별, COUNT(INWON.성별) "인원수"
                FROM
                (
                    SELECT BUSEO "부서명"
                       , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                                 THEN '남자'
                                 WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                                 THEN '여자'
                                 ELSE '알수없음'
                         END "성별"
                    FROM TBL_INSA
                ) INWON
                GROUP BY INWON.부서명, INWON.성별
                HAVING INWON.성별 = '여자'
                       AND
                       COUNT(INWON.성별) >= 5
            ) TAKEBUSEO
            
        )
) INWON

GROUP BY INWON.부서명, INWON.성별;
--==>>
/*
부서명	성별	인원수
영업부	여자	8
개발부	남자	6
영업부	남자	8
개발부	여자	8
*/





--52. 이름, 성별, 나이 조회
--    성별: 주민번호 활용 1,3 → 남자, 2,4 → 여자 (DECODE() 사용)
--    나이: 주민번호 활용



-- #1 이름 구하기
SELECT NAME "이름"
FROM TBL_INSA;


-- #2 성별 구하기 DECODE() 사용.

SELECT DECODE(SUBSTR(SSN, 8, 1), '1', '남자', '3', '남자', '2', '여자', '4', '여자')
FROM TBL_INSA;


-- #3 나이 구하기 

SELECT CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '2')
            THEN
            EXTRACT(YEAR FROM SYSDATE) - 1900 - TO_NUMBER(SUBSTR(SSN, 1, 2)) + 1
            WHEN SUBSTR(SSN, 8, 1) IN ('3', '4')
            THEN
            EXTRACT(YEAR FROM SYSDATE) - 2000 - TO_NUMBER(SUBSTR(SSN, 1, 2)) + 1
        END "나이"
FROM TBL_INSA;


-- #4 하나로 통합.
-- 이름, 성별, 나이 조회

SELECT NAME "이름"
     , DECODE(SUBSTR(SSN, 8, 1), '1', '남자', '3', '남자', '2', '여자', '4', '여자') "성별"
     , CASE WHEN SUBSTR(SSN, 8, 1) IN ('1', '2')
            THEN
            EXTRACT(YEAR FROM SYSDATE) - 1900 - TO_NUMBER(SUBSTR(SSN, 1, 2)) + 1
            WHEN SUBSTR(SSN, 8, 1) IN ('3', '4')
            THEN
            EXTRACT(YEAR FROM SYSDATE) - 2000 - TO_NUMBER(SUBSTR(SSN, 1, 2)) + 1
        END "나이"
FROM TBL_INSA;

--==>>
/*
이름	성별	나이
홍길동	남자	47
이순신	남자	44
이순애	여자	47
김정훈	남자	45
한석봉	남자	43
이기자	여자	46
장인철	남자	46
김영년	여자	42
나윤균	남자	43
김종서	남자	49
유관순	여자	44
정한국	남자	48
조미숙	여자	45
황진이	여자	43
이현숙	여자	44
이상헌	남자	46
엄용수	남자	42
이성길	남자	44
박문수	남자	46
유영희	여자	44
홍길남	남자	44
이영숙	여자	44
김인수	남자	51
김말자	여자	41
우재옥	남자	44
김숙남	여자	43
김영길	남자	44
이남신	남자	43
김말숙	여자	44
정정해	여자	45
지재환	남자	47
심심해	여자	43
김미나	여자	46
이정석	남자	42
정영희	여자	41
이재영	여자	54
최석규	남자	47
손인수	여자	45
고순정	여자	44
박세열	남자	45
문길수	남자	52
채정희	여자	43
양미옥	여자	41
지수환	남자	42
홍원신	남자	55
허경운	남자	48
산마루	남자	46
이기상	남자	45
이미성	여자	41
이미인	여자	43
권영미	여자	45
권옥경	여자	42
김싱식	남자	44
정상호	남자	43
정한나	여자	42
전용재	남자	44
이미경	여자	46
김신제	남자	44
임수봉	여자	43
김신애	여자	43
*/








53. 서울 사람 중에서 기본급이 200만원 이상인 사람 조회. 
    ( 이름, 기본급 );
    
    

SELECT NAME "이름", BASICPAY "기본급"
FROM TBL_INSA
WHERE CITY LIKE '서울'
      AND
      BASICPAY >= 2000000;
--==>>
/*
이름	    기본급
홍길동	2610000
박문수	2300000
김인수	2500000
김영길	2340000
지재환	2450000
산마루	2100000
권영미	2260000
*/
    
    




--54. 입사월별 인원수 구하기. (월, 인원수)   COUNT, GROUP BY, TO_CHAR 사용
--    출력형태 ----------
--     월  인원수
--    1월    10명
--    2월    25명


-- #1 입사월 구해보기 (TO_CHAR() 사용.)
SELECT TO_NUMBER(TO_CHAR(IBSADATE, 'MM')) "입사월"
FROM TBL_INSA;


-- #2-1 그룹화하여 인원수 구하기
-- #2-2 입사월 형태 바꾸기 (1월, 2월, ...)

SELECT TO_NUMBER(TO_CHAR(IBSADATE, 'MM')) || '월' "입사월"
     , COUNT(*) "인원수"
FROM TBL_INSA
GROUP BY TO_NUMBER(TO_CHAR(IBSADATE, 'MM')) || '월'
ORDER BY 입사월 ASC;
--==>>
/*
입사월	인원수
10월	14
11월	3
12월	4
1월	2
2월	6
3월	2
4월	2
5월	3
6월	6
7월	3
8월	9
9월	6
*/










--55. 이름, 생년월일, 기본급, 수당을 조회.
--    생년월일은 주민번호 기준 (2000-10-10 형식으로 출력)
--    기본급은 \1,000,000 형식으로 출력
--    
--
--
--
--SELECT NAME "이름"
--FROM TBL_INSA;
--
--SELECT TO_DATE('19' || SUBSTR(SSN, 1, 6), 'YYYY-MM-DD')
--FROM TBL_INSA;
--
--SELECT TO_CHAR(BASICPAY, '9,999,999')
--FROM TBL_INSA;

SELECT NAME "이름"
     , TO_DATE('19' || SUBSTR(SSN, 1, 6), 'YYYY-MM-DD') "생년월일"
     , TO_CHAR(BASICPAY, '9,999,999') "기본급"
     , SUDANG "수당"
FROM TBL_INSA;
--==>>
/*
이름	생년월일	기본급	수당
홍길동	1977-12-12	 2,610,000	200000
이순신	1980-10-07	 1,320,000	200000
이순애	1977-09-22	 2,550,000	160000
김정훈	1979-03-04	 1,954,200	170000
한석봉	1981-11-12	 1,420,000	160000
이기자	1978-05-05	 2,265,000	150000
장인철	1978-05-06	 1,250,000	150000
김영년	1982-10-11	   950,000	145000
나윤균	1981-08-10	   840,000	220400
김종서	1975-10-10	 2,540,000	130000
유관순	1980-10-10	 1,020,000	140000
정한국	1976-09-09	   880,000	114000
조미숙	1979-01-02	 1,601,000	103000
황진이	1981-07-07	 1,100,000	130000
이현숙	1980-06-06	 1,050,000	104000
이상헌	1978-10-10	 2,350,000	150000
엄용수	1982-05-07	   950,000	210000
이성길	1980-10-28	   880,000	123000
박문수	1978-07-10	 2,300,000	165000
유영희	1980-03-04	   880,000	140000
홍길남	1980-10-10	   875,000	120000
이영숙	1980-05-01	 1,960,000	180000
김인수	1973-12-11	 2,500,000	170000
김말자	1983-02-25	 1,900,000	170000
우재옥	1980-11-03	 1,100,000	160000
김숙남	1981-09-07	 1,050,000	150000
김영길	1980-12-16	 2,340,000	170000
이남신	1981-01-01	   892,000	110000
김말숙	1980-03-01	   920,000	124000
정정해	1979-02-10	 2,304,000	124000
지재환	1977-11-15	 2,450,000	160000
심심해	1981-02-06	   880,000	108000
김미나	1978-05-05	 1,020,000	104000
이정석	1982-05-05	 1,100,000	160000
정영희	1983-10-10	 1,050,000	140000
이재영	1970-11-26	   960,400	190000
최석규	1977-01-29	 2,350,000	187000
손인수	1979-10-09	 2,000,000	150000
고순정	1980-05-04	 2,010,000	160000
박세열	1979-05-09	 2,100,000	130000
문길수	1972-12-17	 2,300,000	150000
채정희	1981-07-09	 1,020,000	200000
양미옥	1983-05-04	 1,100,000	210000
지수환	1982-03-05	 1,060,000	220000
홍원신	1969-09-06	   960,000	152000
허경운	1976-01-05	 2,650,000	150000
산마루	1978-05-05	 2,100,000	112000
이기상	1979-06-04	 2,050,000	106000
이미성	1983-09-08	 1,300,000	130000
이미인	1981-04-03	 1,950,000	103000
권영미	1979-03-03	 2,260,000	104000
권옥경	1982-04-06	 1,020,000	105000
김싱식	1980-07-15	   960,000	108000
정상호	1981-07-05	   980,000	114000
정한나	1982-05-06	 1,000,000	104000
전용재	1980-06-05	 1,950,000	200000
이미경	1978-04-06	 2,520,000	160000
김신제	1980-07-09	 1,950,000	180000
임수봉	1981-08-09	   890,000	102000
김신애	1981-08-09	   900,000	102000
*/




--56. 이름, 출신도, 기본급을 조회하되 출신도 내림차순 출력(1차 정렬 기준).
--    출신도가 같으면 기본급 오름차순 출력(2차 정렬 기준).



SELECT NAME "이름", CITY "출신도", BASICPAY "기본급"
FROM TBL_INSA
ORDER BY 출신도 DESC, 기본급 ASC;
--==>>
/*
이름	출신도	기본급
문길수	충남	2300000
이남신	제주	892000
장인철	제주	1250000
이성길	전북	880000
심심해	전북	880000
김싱식	전북	960000
홍원신	전북	960000
김정훈	전북	1954200
유영희	전남	880000
이영숙	전남	1960000
이기상	전남	2050000
엄용수	인천	950000
정영희	인천	1050000
황진이	인천	1100000
이미성	인천	1300000
전용재	인천	1950000
김신제	인천	1950000
이기자	인천	2265000
최석규	인천	2350000
이순애	인천	2550000
임수봉	서울	890000
김신애	서울	900000
김말숙	서울	920000
김영년	서울	950000
이재영	서울	960400
정한나	서울	1000000
김미나	서울	1020000
유관순	서울	1020000
지수환	서울	1060000
양미옥	서울	1100000
우재옥	서울	1100000
한석봉	서울	1420000
김말자	서울	1900000
산마루	서울	2100000
권영미	서울	2260000
박문수	서울	2300000
김영길	서울	2340000
지재환	서울	2450000
김인수	서울	2500000
홍길동	서울	2610000
손인수	부산	2000000
정정해	부산	2304000
김종서	부산	2540000
박세열	경북	2100000
허경운	경남	2650000
나윤균	경기	840000
홍길남	경기	875000
채정희	경기	1020000
권옥경	경기	1020000
김숙남	경기	1050000
이현숙	경기	1050000
이정석	경기	1100000
이순신	경기	1320000
조미숙	경기	1601000
이미인	경기	1950000
고순정	경기	2010000
이상헌	경기	2350000
이미경	경기	2520000
정한국	강원	880000
정상호	강원	980000
*/






--57. 전화번호가 NULL이 아닌것만 조회. (이름, 전화번호)



SELECT NAME "이름", TEL "전화번호"
FROM TBL_INSA
WHERE TEL IS NOT NULL;
--==>>
/*
이름	전화번호
홍길동	011-2356-4528
이순신	010-4758-6532
이순애	010-4231-1236
김정훈	019-5236-4221
한석봉	018-5211-3542
이기자	010-3214-5357
장인철	011-2345-2525
김영년	016-2222-4444
나윤균	019-1111-2222
김종서	011-3214-5555
유관순	010-8888-4422
정한국	018-2222-4242
조미숙	019-6666-4444
황진이	010-3214-5467
이현숙	016-2548-3365
이상헌	010-4526-1234
엄용수	010-3254-2542
이성길	018-1333-3333
박문수	017-4747-4848
유영희	011-9595-8585
홍길남	011-9999-7575
이영숙	017-5214-5282
김말자	011-5248-7789
우재옥	010-4563-2587
김숙남	010-2112-5225
김영길	019-8523-1478
이남신	016-1818-4848
김말숙	016-3535-3636
정정해	019-6564-6752
지재환	019-5552-7511
심심해	016-8888-7474
김미나	011-2444-4444
이정석	011-3697-7412
이재영	011-9999-9999
최석규	011-7777-7777
손인수	010-6542-7412
고순정	010-2587-7895
박세열	016-4444-7777
문길수	016-4444-5555
채정희	011-5125-5511
양미옥	016-8548-6547
지수환	011-5555-7548
홍원신	011-7777-7777
허경운	017-3333-3333
산마루	018-0505-0505
이미성	010-6654-8854
이미인	011-8585-5252
권영미	011-5555-7548
권옥경	010-3644-5577
김싱식	011-7585-7474
정상호	016-1919-4242
정한나	016-2424-4242
전용재	010-7549-8654
이미경	016-6542-7546
김신제	010-2415-5444
임수봉	011-4151-4154
김신애	011-4151-4444
*/








--58. 근무년수가 10년 이상인 사람 조회. (이름, 입사일)


SELECT NAME "이름", IBSADATE "입사일"
FROM TBL_INSA
WHERE EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM IBSADATE) >= 10;

--==>>
/*
이름	입사일
홍길동	1998-10-11
이순신	2000-11-29
이순애	1999-02-25
김정훈	2000-10-01
한석봉	2004-08-13
이기자	2002-02-11
장인철	1998-03-16
김영년	2002-04-30
나윤균	2003-10-10
김종서	1997-08-08
유관순	2000-07-07
정한국	1999-10-16
조미숙	1998-06-07
황진이	2002-02-15
이현숙	1999-07-26
이상헌	2001-11-29
엄용수	2000-08-28
이성길	2004-08-08
박문수	1999-12-10
유영희	2003-10-10
홍길남	2001-09-07
이영숙	2003-02-25
김인수	1995-02-23
김말자	1999-08-28
우재옥	2000-10-01
김숙남	2002-08-28
김영길	2000-10-18
이남신	2001-09-07
김말숙	2000-09-08
정정해	1999-10-17
지재환	2001-01-21
심심해	2000-05-05
김미나	1998-06-07
이정석	2005-09-26
정영희	2002-05-16
이재영	2003-08-10
최석규	1998-10-15
손인수	1999-11-15
고순정	2003-12-28
박세열	2000-09-10
문길수	2001-12-10
채정희	2003-10-17
양미옥	2003-09-24
지수환	2004-01-21
홍원신	2003-03-16
허경운	1999-05-04
산마루	2001-07-15
이기상	2001-06-07
이미성	2000-04-07
이미인	2003-06-07
권영미	2000-06-04
권옥경	2000-10-10
김싱식	1999-12-12
정상호	1999-10-16
정한나	2004-06-07
전용재	2004-08-13
이미경	1998-02-11
김신제	2003-08-08
임수봉	2001-10-10
김신애	2001-10-10
*/




--59. 주민번호를 기준으로 75~82년생 조회. (이름, 주민번호, 출신도).
--    SUBSTR() 함수, BEWTEEN AND 구문, TO_NUMBER() 함수 이용.


SELECT NAME "이름", SSN "주민번호", CITY "출신도"
FROM TBL_INSA
WHERE TO_NUMBER(SUBSTR(SSN, 1, 2)) BETWEEN 75 AND 82;
--==>>
/*
이름	주민번호	출신도
홍길동	771212-1022432	서울
이순신	801007-1544236	경기
이순애	770922-2312547	인천
김정훈	790304-1788896	전북
한석봉	811112-1566789	서울
이기자	780505-2978541	인천
장인철	780506-1625148	제주
김영년	821011-2362514	서울
나윤균	810810-1552147	경기
김종서	751010-1122233	부산
유관순	801010-2987897	서울
정한국	760909-1333333	강원
조미숙	790102-2777777	경기
황진이	810707-2574812	인천
이현숙	800606-2954687	경기
이상헌	781010-1666678	경기
엄용수	820507-1452365	인천
이성길	801028-1849534	전북
박문수	780710-1985632	서울
유영희	800304-2741258	전남
홍길남	801010-1111111	경기
이영숙	800501-2312456	전남
우재옥	801103-1654442	서울
김숙남	810907-2015457	경기
김영길	801216-1898752	서울
이남신	810101-1010101	제주
김말숙	800301-2020202	서울
정정해	790210-2101010	부산
지재환	771115-1687988	서울
심심해	810206-2222222	전북
김미나	780505-2999999	서울
이정석	820505-1325468	경기
최석규	770129-1456987	인천
손인수	791009-2321456	부산
고순정	800504-2000032	경기
박세열	790509-1635214	경북
채정희	810709-2000054	경기
지수환	820305-1475286	서울
허경운	760105-1458752	경남
산마루	780505-1234567	서울
이기상	790604-1415141	전남
이미인	810403-2828287	경기
권영미	790303-2155554	서울
권옥경	820406-2000456	경기
김싱식	800715-1313131	전북
정상호	810705-1212141	강원
정한나	820506-2425153	서울
전용재	800605-1456987	인천
이미경	780406-2003214	경기
김신제	800709-1321456	인천
임수봉	810809-2121244	서울
김신애	810809-2111111	서울
*/





--60. 근무년수가 5~10년인 사람 조회. (이름, 입사일)


SELECT NAME "이름", IBSADATE "입사일"
FROM TBL_INSA
WHERE (EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM IBSADATE))
       BETWEEN
       5 AND 10;
--==>> 조회 결과 없음.
       






--61. 김씨, 이씨, 박씨만 조회 (이름, 부서). SUBSTR() 함수 이용.

SELECT NAME "이름", BUSEO "부서"
FROM TBL_INSA
WHERE SUBSTR(NAME, 1, 1) IN ('김', '이', '박');
--==>>
/*
이름	부서
이순신	총무부
이순애	개발부
김정훈	영업부
이기자	개발부
김영년	홍보부
김종서	영업부
이현숙	총무부
이상헌	개발부
이성길	개발부
박문수	인사부
이영숙	기획부
김인수	영업부
김말자	기획부
김숙남	영업부
김영길	총무부
이남신	인사부
김말숙	총무부
김미나	영업부
이정석	기획부
이재영	자재부
박세열	인사부
이기상	개발부
이미성	개발부
이미인	홍보부
김싱식	자재부
이미경	자재부
김신제	기획부
김신애	개발부
*/






--62. 입사일을 "년-월-일 요일" 형식으로 남자만 조회 (이름, 주민번호, 입사일)



--SELECT TO_CHAR(IBSADATE, 'YYYY') || '년-'   ||
--       TO_CHAR(IBSADATE, 'MM')   || '월-'   ||
--       TO_CHAR(IBSADATE, 'DD')   || '일-'   ||
--       TO_CHAR(IBSADATE, 'DAY') "입사일"
--
--FROM TBL_INSA;



SELECT NAME "이름"
     , SSN "주민번호"
     , TO_CHAR(IBSADATE, 'YYYY') || '년-'   ||
       TO_CHAR(IBSADATE, 'MM')   || '월-'   ||
       TO_CHAR(IBSADATE, 'DD')   || '일-'   ||
       TO_CHAR(IBSADATE, 'DAY') "입사일"
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('1', '3');
--==>>
/*
이름	주민번호	입사일
홍길동	771212-1022432	1998년-10월-11일-일요일
이순신	801007-1544236	2000년-11월-29일-수요일
김정훈	790304-1788896	2000년-10월-01일-일요일
한석봉	811112-1566789	2004년-08월-13일-금요일
장인철	780506-1625148	1998년-03월-16일-월요일
나윤균	810810-1552147	2003년-10월-10일-금요일
김종서	751010-1122233	1997년-08월-08일-금요일
정한국	760909-1333333	1999년-10월-16일-토요일
이상헌	781010-1666678	2001년-11월-29일-목요일
엄용수	820507-1452365	2000년-08월-28일-월요일
이성길	801028-1849534	2004년-08월-08일-일요일
박문수	780710-1985632	1999년-12월-10일-금요일
홍길남	801010-1111111	2001년-09월-07일-금요일
김인수	731211-1214576	1995년-02월-23일-목요일
우재옥	801103-1654442	2000년-10월-01일-일요일
김영길	801216-1898752	2000년-10월-18일-수요일
이남신	810101-1010101	2001년-09월-07일-금요일
지재환	771115-1687988	2001년-01월-21일-일요일
이정석	820505-1325468	2005년-09월-26일-월요일
최석규	770129-1456987	1998년-10월-15일-목요일
박세열	790509-1635214	2000년-09월-10일-일요일
문길수	721217-1951357	2001년-12월-10일-월요일
지수환	820305-1475286	2004년-01월-21일-수요일
홍원신	690906-1985214	2003년-03월-16일-일요일
허경운	760105-1458752	1999년-05월-04일-화요일
산마루	780505-1234567	2001년-07월-15일-일요일
이기상	790604-1415141	2001년-06월-07일-목요일
김싱식	800715-1313131	1999년-12월-12일-일요일
정상호	810705-1212141	1999년-10월-16일-토요일
전용재	800605-1456987	2004년-08월-13일-금요일
김신제	800709-1321456	2003년-08월-08일-금요일
*/









--63. 부서별 직위별 급여합 구하기. (부서, 직위, 급여합)


-- #1 부서별 급여합
SELECT BUSEO "부서명"
     , SUM(BASICPAY + SUDANG) "급여합"
FROM TBL_INSA
GROUP BY BUSEO;


-- #2 직위별 급여합
SELECT JIKWI "직위명"
     , SUM(BASICPAY + SUDANG) "급여합"
FROM TBL_INSA
GROUP BY JIKWI;



SELECT BP.부서명, BP.급여합, JP.직위명, JP.급여합
FROM
(
    SELECT BUSEO "부서명"
     , SUM(BASICPAY + SUDANG) "급여합"
    FROM TBL_INSA
    GROUP BY BUSEO 
) BP
INNER JOIN
(
    SELECT JIKWI "직위명"
         , BUSEO "부서명"
         , SUM(BASICPAY + SUDANG) "급여합"
    FROM TBL_INSA
    GROUP BY JIKWI, BUSEO
) JP
ON BP.부서명 = JP.부서명
ORDER BY BP.부서명 ASC, JP.직위명 ASC;

--==>>
/*
부서명	급여합	직위명	급여합_1
개발부	21403000	과장	4915000
개발부	21403000	대리	3556000
개발부	21403000	부장	2710000
개발부	21403000	사원	10222000
기획부	14145000	대리	6340000
기획부	14145000	부장	5420000
기획부	14145000	사원	2385000
영업부	28060200	과장	2364000
영업부	28060200	대리	10806200
영업부	28060200	부장	5340000
영업부	28060200	사원	9550000
인사부	6757400	과장	2465000
인사부	6757400	대리	2230000
인사부	6757400	사원	2062400
자재부	9356400	과장	2450000
자재부	9356400	부장	2680000
자재부	9356400	사원	4226400
총무부	13036000	과장	4938000
총무부	13036000	부장	2800000
총무부	13036000	사원	5298000
홍보부	9477000	과장	2537000
홍보부	9477000	대리	3757000
홍보부	9477000	사원	3183000
*/


--SELECT *
--FROM
--(
--    SELECT BUSEO "부서명"
--     , SUM(BASICPAY + SUDANG) "급여합"
--    FROM TBL_INSA
--    GROUP BY BUSEO 
--) BP
--INNER JOIN
--(
--    SELECT JIKWI "직위명"
--         , BUSEO "부서명"
--         , SUM(BASICPAY + SUDANG) "급여합"
--    FROM TBL_INSA
--    GROUP BY JIKWI, BUSEO
--) JP
--ON BP.부서명 = JP.부서명;





--64. 부서별 직위별 인원수, 급여합, 급여평균 구하기. (부서, 직위, 급여합)




SELECT DISTINCT BP.부서명, BP.부서별인원수, BP.부서별급여합, BP.부서별급여평균
              , JP.직위명, JP.직위별인원수, JP.직위별급여합, JP.직위별급여평균
FROM
(
    SELECT BUSEO "부서명"
     , SUM(BASICPAY + SUDANG) "부서별급여합"
     , COUNT(*) "부서별인원수"
     , ROUND(AVG(BASICPAY + SUDANG), 0) "부서별급여평균"
    FROM TBL_INSA
    GROUP BY BUSEO 
) BP
INNER JOIN
(
    SELECT JIKWI "직위명"
         , BUSEO "부서명"
         , SUM(BASICPAY + SUDANG) "직위별급여합"
         , COUNT(*) "직위별인원수"
         , ROUND(AVG(BASICPAY + SUDANG), 0) "직위별급여평균"
    FROM TBL_INSA
    GROUP BY JIKWI, BUSEO
) JP
ON BP.부서명 = JP.부서명
ORDER BY BP.부서명 ASC, JP.직위명 ASC;
--==>>
/*
부서명	부서별인원수	부서별급여합	부서별급여평균	직위명	직위별인원수	직위별급여합	직위별급여평균
개발부	14	21403000	1528786	과장	2	4915000	2457500
개발부	14	21403000	1528786	대리	2	3556000	1778000
개발부	14	21403000	1528786	부장	1	2710000	2710000
개발부	14	21403000	1528786	사원	9	10222000	1135778
기획부	7	14145000	2020714	대리	3	6340000	2113333
기획부	7	14145000	2020714	부장	2	5420000	2710000
기획부	7	14145000	2020714	사원	2	2385000	1192500
영업부	16	28060200	1753763	과장	1	2364000	2364000
영업부	16	28060200	1753763	대리	5	10806200	2161240
영업부	16	28060200	1753763	부장	2	5340000	2670000
영업부	16	28060200	1753763	사원	8	9550000	1193750
인사부	4	6757400	1689350	과장	1	2465000	2465000
인사부	4	6757400	1689350	대리	1	2230000	2230000
인사부	4	6757400	1689350	사원	2	2062400	1031200
자재부	6	9356400	1559400	과장	1	2450000	2450000
자재부	6	9356400	1559400	부장	1	2680000	2680000
자재부	6	9356400	1559400	사원	4	4226400	1056600
총무부	7	13036000	1862286	과장	2	4938000	2469000
총무부	7	13036000	1862286	부장	1	2800000	2800000
총무부	7	13036000	1862286	사원	4	5298000	1324500
홍보부	6	9477000	1579500	과장	1	2537000	2537000
홍보부	6	9477000	1579500	대리	2	3757000	1878500
홍보부	6	9477000	1579500	사원	3	3183000	1061000
*/










--65. 부서별 직위별 인원수를 구하되 인원수가 5명 이상인 경우만 조회.



-- #1 인원수가 5명 이상인 부서 찾기

SELECT BUSEO "부서명", COUNT(*) "부서별인원수"
FROM TBL_INSA
GROUP BY BUSEO
HAVING COUNT(*) >= 5;



-- #2 부서가 위와 같은 직원들 중 직위별로 인원수 구하기
SELECT JIKWI "직위명", BUSEO "부서명", COUNT(*) "직위별인원수"
FROM TBL_INSA
GROUP BY JIKWI, BUSEO;




-- #3 두 테이블 결합 INNER JOIN


SELECT BT.부서명, BT.부서별인원수, JT.직위명, JT.직위별인원수
FROM
(
    SELECT BUSEO "부서명", COUNT(*) "부서별인원수"
    FROM TBL_INSA
    GROUP BY BUSEO
    HAVING COUNT(*) >= 5
) BT
INNER JOIN
(
    SELECT JIKWI "직위명", BUSEO "부서명", COUNT(*) "직위별인원수"
    FROM TBL_INSA
    GROUP BY JIKWI, BUSEO
) JT
ON BT.부서명 = JT.부서명
ORDER BY BT.부서명 ASC;

--==>>
/*
부서명	부서별인원수	직위명	직위별인원수
개발부	14	부장	1
개발부	14	과장	2
개발부	14	사원	9
개발부	14	대리	2
기획부	7	사원	2
기획부	7	부장	2
기획부	7	대리	3
영업부	16	대리	5
영업부	16	과장	1
영업부	16	사원	8
영업부	16	부장	2
자재부	6	부장	1
자재부	6	사원	4
자재부	6	과장	1
총무부	7	사원	4
총무부	7	과장	2
총무부	7	부장	1
홍보부	6	대리	2
홍보부	6	과장	1
홍보부	6	사원	3
*/







--66. 2000년에 입사한 여사원 조회. (이름, 주민번호, 입사일)



SELECT NAME "이름", SSN "주민번호", IBSADATE "입사일"
FROM TBL_INSA
WHERE EXTRACT(YEAR FROM IBSADATE) = 2000
      AND
      SUBSTR(SSN, 8, 1) IN ('2', '3');
      
--==>>
/*
이름	주민번호	입사일
유관순	801010-2987897	2000-07-07
김말숙	800301-2020202	2000-09-08
심심해	810206-2222222	2000-05-05
이미성	830908-2456548	2000-04-07
권영미	790303-2155554	2000-06-04
권옥경	820406-2000456	2000-10-10
*/





--67. 성씨가 한 글자(김, 이, 박 등)라는 가정하에 성씨별 인원수 조회 (성씨, 인원수)


SELECT SUBSTR(NAME, 1, 1) "성씨"
      , COUNT(*) "인원수"
FROM TBL_INSA
GROUP BY SUBSTR(NAME, 1, 1)
ORDER BY 성씨 ASC;
--==>>
/*
성씨	인원수
고	1
권	2
김	12
나	1
문	1
박	2
산	1
손	1
심	1
양	1
엄	1
우	1
유	2
이	14
임	1
장	1
전	1
정	5
조	1
지	2
채	1
최	1
한	1
허	1
홍	3
황	1
*/






--68. 출신도(CITY)별 성별 인원수 조회.

SELECT CITY "출신도"
     , CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
             THEN '남자'
             WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
             THEN '여자'
             ELSE '알수없음'
       END "성별"
     , COUNT(*) "인원수"
FROM TBL_INSA

GROUP BY CITY, SUBSTR(SSN, 8, 1)
ORDER BY CITY ASC;

--==>>
/*
출신도	성별	인원수
강원	남자	2
경기	남자	5
경기	여자	8
경남	남자	1
경북	남자	1
부산	남자	1
부산	여자	2
서울	남자	9
서울	여자	11
인천	남자	4
인천	여자	5
전남	남자	1
전남	여자	2
전북	남자	4
전북	여자	1
제주	남자	2
충남	남자	1
*/



-- 인원수 60명 맞는지 확인.
--SELECT SUM(T.인원수)
--FROM
--(
--    SELECT CITY "출신도"
--     , CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
--             THEN '남자'
--             WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
--             THEN '여자'
--             ELSE '알수없음'
--       END "성별"
--     , COUNT(*) "인원수"
--    FROM TBL_INSA
--    
--    GROUP BY CITY, SUBSTR(SSN, 8, 1)
--    ORDER BY CITY ASC
--) T;






--69. 부서별 남자인원수가 5명 이상인 부서와 남자인원수 조회.



SELECT BUSEO
     , CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
             THEN '남자'
             WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
             THEN '여자'
             ELSE '알수없음'
       END "성별"
     , COUNT(SUBSTR(SSN, 8, 1)) "인원수"

FROM TBL_INSA
GROUP BY BUSEO, SUBSTR(SSN, 8, 1);


-- 남자 인원수가 5 이상인 것 찾기.
--SELECT BUSEO
--     , CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
--             THEN '남자'
--             WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
--             THEN '여자'
--             ELSE '알수없음'
--       END "성별"
--     , COUNT(*) "인원수"
--
--FROM TBL_INSA
--WHERE SUBSTR(SSN, 8, 1) IN ('1', '3')
--GROUP BY BUSEO, SUBSTR(SSN, 8, 1)
--HAVING COUNT(*) >= 5;


-- 부서명만 뽑기

SELECT T.BUSEO
FROM 
(
    SELECT BUSEO
     , CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
             THEN '남자'
             WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
             THEN '여자'
             ELSE '알수없음'
       END "성별"
     , COUNT(*) "인원수"

    FROM TBL_INSA
    WHERE SUBSTR(SSN, 8, 1) IN ('1', '3')
    GROUP BY BUSEO, SUBSTR(SSN, 8, 1)
    HAVING COUNT(*) >= 5

)T;

-- 위의 식의 WHERE 절에 조건으로 넣기.



SELECT BUSEO "부서명"
     , CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
             THEN '남자'
             WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
             THEN '여자'
             ELSE '알수없음'
       END "성별"
     , COUNT(SUBSTR(SSN, 8, 1)) "인원수"

FROM TBL_INSA
WHERE BUSEO
      IN 
      (
        SELECT T.BUSEO
        FROM 
        (
            SELECT BUSEO
             , CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                     THEN '남자'
                     WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                     THEN '여자'
                     ELSE '알수없음'
               END "성별"
             , COUNT(*) "인원수"
        
            FROM TBL_INSA
            WHERE SUBSTR(SSN, 8, 1) IN ('1', '3')
            GROUP BY BUSEO, SUBSTR(SSN, 8, 1)
            HAVING COUNT(*) >= 5
        
        )T
      )
GROUP BY BUSEO, SUBSTR(SSN, 8, 1);

--==>>
/*
부서명	성별  	인원수
영업부	남자  	8
개발부	여자  	8
개발부	남자  	6
영업부	여자	    8
*/







--70. 입사년도별 인원수 조회.


SELECT EXTRACT(YEAR FROM IBSADATE) "입사년도"
     , COUNT(*) "인원수"
FROM TBL_INSA
GROUP BY EXTRACT(YEAR FROM IBSADATE);
--==>>
/*
입사년도	인원수
1997	1
2005    	1
1999	10
2001    	9
1998	6
2000	    12
1995	1
2004    	5
2003	    10
2002	    5
*/


-- 60명이 맞는지 확인.
--SELECT SUM(T.인원수)
--FROM
--(
--    SELECT EXTRACT(YEAR FROM IBSADATE) "입사년도"
--     , COUNT(*) "인원수"
--    FROM TBL_INSA
--    GROUP BY EXTRACT(YEAR FROM IBSADATE)
--) T;




--71. 전체인원수, 2000년, 1999년, 1998년도에 입사한 인원을 다음의 형식으로 조회.
--    출력형태 ---------------    
--    전체 2000 1999 1998
--      60    x    x    x


-- #1 전체 인원수 구하기


SELECT COUNT(*)
FROM TBL_INSA;


-- #2 2000년도 인원 구하기

SELECT COUNT(*)  "2000년도인원수"
FROM TBL_INSA
WHERE EXTRACT(YEAR FROM IBSADATE) = 2000;



-- #3 1999년도 인원 구하기

SELECT COUNT(*) "1999년도인원수"
FROM TBL_INSA
WHERE EXTRACT(YEAR FROM IBSADATE) = 1999;



-- #4 1998년도 인원 구하기

SELECT COUNT(*) "1998년도인원수"
FROM TBL_INSA
WHERE EXTRACT(YEAR FROM IBSADATE) = 1998;


-- #5 서브 상단 쿼리로 구성하기!!!!


SELECT (
            SELECT COUNT(*)
            FROM TBL_INSA
       ) "전체"
       ,
       (
            SELECT COUNT(*)  "2000년도인원수"
            FROM TBL_INSA
            WHERE EXTRACT(YEAR FROM IBSADATE) = 2000
       ) "2000"
       ,
       (
            SELECT COUNT(*) "1999년도인원수"
            FROM TBL_INSA
            WHERE EXTRACT(YEAR FROM IBSADATE) = 1999        
       ) "1999"
       ,
       (
            SELECT COUNT(*) "1998년도인원수"
            FROM TBL_INSA
            WHERE EXTRACT(YEAR FROM IBSADATE) = 1998 
       ) "1998"
FROM DUAL;

--==>>
/*
전체	    2000    	1999	1998
60	    12	    10	    6
*/

   
   
   
   
   
   


--72. 아래 형식으로 지역별 인원수 조회.
--    출력형태 -----------------
--    전체 서울  인천  경기
--      60    x     x     x
      
      
-- #1 전체 인원수 구하기


SELECT COUNT(*)
FROM TBL_INSA;

-- 서울  인천  경기

-- #2 서울 인원 구하기

SELECT COUNT(*)  "서울인원수"
FROM TBL_INSA
WHERE CITY LIKE '서울';



-- #3 인천 인원 구하기

SELECT COUNT(*) "인천인원수"
FROM TBL_INSA
WHERE CITY LIKE '인천';



-- #4 경기 인원 구하기

SELECT COUNT(*) "경기인원수"
FROM TBL_INSA
WHERE CITY LIKE '경기';


-- #5 서브 상단 쿼리로 구성하기!!!!
/*
    출력형태 -----------------
    전체 서울  인천  경기
      60    x     x     x
*/

SELECT (
            SELECT COUNT(*)
            FROM TBL_INSA
       ) "전체"
       ,
       (
            SELECT COUNT(*)  "서울인원수"
            FROM TBL_INSA
            WHERE CITY LIKE '서울'
       ) "서울"
       ,
       (
           SELECT COUNT(*) "인천인원수"
            FROM TBL_INSA
            WHERE CITY LIKE '인천'   
       ) "인천"
       ,
       (
            SELECT COUNT(*) "경기인원수"
            FROM TBL_INSA
            WHERE CITY LIKE '경기'
       ) "경기"
FROM DUAL;


--==>>
/*
전체  	서울	    인천	    경기
60	    20	    9	    13
*/
  



--73. 기본급(BASICPAY)이 평균 이하인 사원 조회. (이름, 기본급). AVG() 함수. 서브쿼리.


-- #1 기본급 평균 구하기 (정수부)

SELECT ROUND(AVG(BASICPAY), 0)
FROM TBL_INSA;
--==>> 1556527

-- #2 평균 이하인 사원 구하기


SELECT NAME "이름", BASICPAY "기본급"
FROM TBL_INSA
WHERE BASICPAY 
      <=
      (
        SELECT ROUND(AVG(BASICPAY), 0)
        FROM TBL_INSA
       );
--==>>
/*
이름	기본급
이순신	1320000
한석봉	1420000
장인철	1250000
김영년	950000
나윤균	840000
유관순	1020000
정한국	880000
황진이	1100000
이현숙	1050000
엄용수	950000
이성길	880000
유영희	880000
홍길남	875000
우재옥	1100000
김숙남	1050000
이남신	892000
김말숙	920000
심심해	880000
김미나	1020000
이정석	1100000
정영희	1050000
이재영	960400
채정희	1020000
양미옥	1100000
지수환	1060000
홍원신	960000
이미성	1300000
권옥경	1020000
김싱식	960000
정상호	980000
정한나	1000000
임수봉	890000
김신애	900000
*/





-- 74. 기본급 상위 10%만 조회. (이름, 기본급)


-- #1. 상위 10%가 몇 명인지 구하기

SELECT (COUNT(*) - COUNT(*) * ((100 - 10) / 100))
FROM TBL_INSA;


-- #2 기본급순위 구하기
SELECT NAME, BASICPAY
     , RANK() OVER (ORDER BY BASICPAY DESC) "기본급순위"
FROM TBL_INSA;


-- #3 기본급 상위 10%인 사원이름, 기본급 구하기

SELECT T.NAME "사원이름"
     , T.BASICPAY "기본급"
FROM
(
    SELECT NAME, BASICPAY
         , RANK() OVER (ORDER BY BASICPAY DESC) "기본급순위"
    FROM TBL_INSA
)T
WHERE T.기본급순위 <= (SELECT (COUNT(*) - COUNT(*) * ((100 - 10) / 100))
                      FROM TBL_INSA);

--==>>
/*
사원이름	기본급
허경운	2650000
홍길동	2610000
이순애	2550000
김종서	2540000
이미경	2520000
김인수	2500000
*/




--75. 기본급 순위가 5순위까지만 조회. (모든 정보)





-- #1 기본급 상위 10%인 사원이름 구하기

SELECT T.NAME "사원이름"
FROM
(
    SELECT NAME, BASICPAY
         , RANK() OVER (ORDER BY BASICPAY DESC) "기본급순위"
    FROM TBL_INSA
)T
WHERE T.기본급순위 <= (SELECT (COUNT(*) - COUNT(*) * ((100 - 10) / 100))
                      FROM TBL_INSA);

-- #2 모든 정보 출력하기


SELECT *
FROM TBL_INSA
WHERE NAME 
      IN
      (
        SELECT T.NAME "사원이름"
        FROM
        (
            SELECT NAME, BASICPAY
                 , RANK() OVER (ORDER BY BASICPAY DESC) "기본급순위"
            FROM TBL_INSA
        )T
        WHERE T.기본급순위 <= (SELECT (COUNT(*) - COUNT(*) * ((100 - 10) / 100))
                              FROM TBL_INSA)
      );
--==>>
/*
NUM	NAME	SSN	IBSADATE	CITY	TEL	BUSEO	JIKWI	BASICPAY	SUDANG
1046	허경운	760105-1458752	1999-05-04	경남	017-3333-3333	총무부	부장	2650000	150000
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000
1003	이순애	770922-2312547	1999-02-25	인천	010-4231-1236	개발부	부장	2550000	160000
1010	김종서	751010-1122233	1997-08-08	부산	011-3214-5555	영업부	부장	2540000	130000
1057	이미경	780406-2003214	1998-02-11	경기	016-6542-7546	자재부	부장	2520000	160000
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000
*/










--76. 입사일이 빠른 순서로 5순위까지만 조회. (모든 정보)


-- #1 입사일 빠른 순으로 순위 정하기

SELECT RANK() OVER(ORDER BY IBSADATE ASC) "입사일순위"
     , IBSADATE "입사일"
     , NAME "이름"
     , SSN "주민번호"
FROM TBL_INSA;


-- #2 위에서 구한 순위, 이름, 주민번호를 이용하여
--    입사일 순위가 1~5위까지인 사원들을 조회하기


SELECT TI.*
FROM TBL_INSA TI
    INNER JOIN
    (
        SELECT RANK() OVER(ORDER BY IBSADATE ASC) "입사일순위"
         , IBSADATE "입사일"
         , NAME "이름"
         , SSN "주민번호"
        FROM TBL_INSA
    ) T
    ON TI.NAME = T.이름
       AND
       TI.SSN = T.주민번호
WHERE T.입사일순위 <= 5;

--==>>
/*
NUM	NAME	SSN	IBSADATE	CITY	TEL	BUSEO	JIKWI	BASICPAY	SUDANG
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000
1010	김종서	751010-1122233	1997-08-08	부산	011-3214-5555	영업부	부장	2540000	130000
1057	이미경	780406-2003214	1998-02-11	경기	016-6542-7546	자재부	부장	2520000	160000
1007	장인철	780506-1625148	1998-03-16	제주	011-2345-2525	개발부	대리	1250000	150000
1013	조미숙	790102-2777777	1998-06-07	경기	019-6666-4444	홍보부	대리	1601000	103000
1033	김미나	780505-2999999	1998-06-07	서울	011-2444-4444	영업부	사원	1020000	104000
*/




--77. 평균 급여보다 많은 급여를 받는 직원 정보 조회. (모든 정보)



-- #1 평균 급여 구하기 (정수부)
SELECT ROUND(AVG(BASICPAY + SUDANG), 0) "평균급여"
FROM TBL_INSA;
--==>> 1703917


-- #2 평균 급여보다 더 많은 급여를 받는 직원 정보 모두 조회하기

SELECT TI.*
     , (TI.BASICPAY + TI.SUDANG) "급여"
FROM TBL_INSA TI
WHERE (TI.BASICPAY + TI.SUDANG)
       >
      (
        SELECT ROUND(AVG(BASICPAY + SUDANG), 0) "평균급여"
        FROM TBL_INSA
      );
--==>>
/*
NUM	NAME	SSN	IBSADATE	CITY	TEL	BUSEO	JIKWI	BASICPAY	SUDANG	급여
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000	2810000
1003	이순애	770922-2312547	1999-02-25	인천	010-4231-1236	개발부	부장	2550000	160000	2710000
1004	김정훈	790304-1788896	2000-10-01	전북	019-5236-4221	영업부	대리	1954200	170000	2124200
1006	이기자	780505-2978541	2002-02-11	인천	010-3214-5357	개발부	과장	2265000	150000	2415000
1010	김종서	751010-1122233	1997-08-08	부산	011-3214-5555	영업부	부장	2540000	130000	2670000
1013	조미숙	790102-2777777	1998-06-07	경기	019-6666-4444	홍보부	대리	1601000	103000	1704000
1016	이상헌	781010-1666678	2001-11-29	경기	010-4526-1234	개발부	과장	2350000	150000	2500000
1019	박문수	780710-1985632	1999-12-10	서울	017-4747-4848	인사부	과장	2300000	165000	2465000
1022	이영숙	800501-2312456	2003-02-25	전남	017-5214-5282	기획부	대리	1960000	180000	2140000
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000	2670000
1024	김말자	830225-2633334	1999-08-28	서울	011-5248-7789	기획부	대리	1900000	170000	2070000
1027	김영길	801216-1898752	2000-10-18	서울	019-8523-1478	총무부	과장	2340000	170000	2510000
1030	정정해	790210-2101010	1999-10-17	부산	019-6564-6752	총무부	과장	2304000	124000	2428000
1031	지재환	771115-1687988	2001-01-21	서울	019-5552-7511	기획부	부장	2450000	160000	2610000
1037	최석규	770129-1456987	1998-10-15	인천	011-7777-7777	홍보부	과장	2350000	187000	2537000
1038	손인수	791009-2321456	1999-11-15	부산	010-6542-7412	영업부	대리	2000000	150000	2150000
1039	고순정	800504-2000032	2003-12-28	경기	010-2587-7895	영업부	대리	2010000	160000	2170000
1040	박세열	790509-1635214	2000-09-10	경북	016-4444-7777	인사부	대리	2100000	130000	2230000
1041	문길수	721217-1951357	2001-12-10	충남	016-4444-5555	자재부	과장	2300000	150000	2450000
1046	허경운	760105-1458752	1999-05-04	경남	017-3333-3333	총무부	부장	2650000	150000	2800000
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000	2212000
1048	이기상	790604-1415141	2001-06-07	전남		개발부	대리	2050000	106000	2156000
1050	이미인	810403-2828287	2003-06-07	경기	011-8585-5252	홍보부	대리	1950000	103000	2053000
1051	권영미	790303-2155554	2000-06-04	서울	011-5555-7548	영업부	과장	2260000	104000	2364000
1056	전용재	800605-1456987	2004-08-13	인천	010-7549-8654	영업부	대리	1950000	200000	2150000
1057	이미경	780406-2003214	1998-02-11	경기	016-6542-7546	자재부	부장	2520000	160000	2680000
1058	김신제	800709-1321456	2003-08-08	인천	010-2415-5444	기획부	대리	1950000	180000	2130000
*/




--
--78. '이순애' 직원의 급여보다 더 많은 급여를 받는 직원 조회. (모든 정보)
--    단, 이순애 직원의 급여가 변하더라도 작성된 쿼리문은 기능 수행이 가능하도록 조회.


-- #1 이순애씨의 급여 구하기
SELECT (TI.BASICPAY + TI.SUDANG) "순애씨급여"
FROM TBL_INSA TI
WHERE NAME = '이순애';

-- #2 순애씨보다 더 많은 급여를 받는 직원 정보 모두 조회하기

SELECT TI2.*
    , (TI2.BASICPAY + TI2.SUDANG) "급여"
FROM TBL_INSA TI2
WHERE (TI2.BASICPAY + TI2.SUDANG)
      >
      (
            SELECT (TI.BASICPAY + TI.SUDANG) "순애씨급여"
            FROM TBL_INSA TI
            WHERE NAME = '이순애'
      );
--==>>
/*
NUM	NAME	SSN	IBSADATE	CITY	TEL	BUSEO	JIKWI	BASICPAY	SUDANG	급여
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000	2810000
1046	허경운	760105-1458752	1999-05-04	경남	017-3333-3333	총무부	부장	2650000	150000	2800000
*/




--79. 총무부의 평균 급여보다 많은 급여를 받는 직원들의 이름, 부서명 조회.



-- #1 총무부 평균 급여 구하기 (정수부)
SELECT ROUND(AVG(BASICPAY + SUDANG), 0) "총무부평균급여"
FROM TBL_INSA
WHERE BUSEO LIKE '총무부';
--==>> 1862286



-- #2 총무부 평균 급여보다 더 많은 급여를 받는 직원 정보 모두 조회하기

SELECT TI2.*
    , (TI2.BASICPAY + TI2.SUDANG) "급여"
FROM TBL_INSA TI2
WHERE (TI2.BASICPAY + TI2.SUDANG)
      >
      (
           SELECT ROUND(AVG(BASICPAY + SUDANG), 0) "총무부평균급여"
            FROM TBL_INSA
            WHERE BUSEO LIKE '총무부'
      );
--==>>
/*
NUM	NAME	SSN	IBSADATE	CITY	TEL	BUSEO	JIKWI	BASICPAY	SUDANG	급여
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000	2810000
1003	이순애	770922-2312547	1999-02-25	인천	010-4231-1236	개발부	부장	2550000	160000	2710000
1004	김정훈	790304-1788896	2000-10-01	전북	019-5236-4221	영업부	대리	1954200	170000	2124200
1006	이기자	780505-2978541	2002-02-11	인천	010-3214-5357	개발부	과장	2265000	150000	2415000
1010	김종서	751010-1122233	1997-08-08	부산	011-3214-5555	영업부	부장	2540000	130000	2670000
1016	이상헌	781010-1666678	2001-11-29	경기	010-4526-1234	개발부	과장	2350000	150000	2500000
1019	박문수	780710-1985632	1999-12-10	서울	017-4747-4848	인사부	과장	2300000	165000	2465000
1022	이영숙	800501-2312456	2003-02-25	전남	017-5214-5282	기획부	대리	1960000	180000	2140000
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000	2670000
1024	김말자	830225-2633334	1999-08-28	서울	011-5248-7789	기획부	대리	1900000	170000	2070000
1027	김영길	801216-1898752	2000-10-18	서울	019-8523-1478	총무부	과장	2340000	170000	2510000
1030	정정해	790210-2101010	1999-10-17	부산	019-6564-6752	총무부	과장	2304000	124000	2428000
1031	지재환	771115-1687988	2001-01-21	서울	019-5552-7511	기획부	부장	2450000	160000	2610000
1037	최석규	770129-1456987	1998-10-15	인천	011-7777-7777	홍보부	과장	2350000	187000	2537000
1038	손인수	791009-2321456	1999-11-15	부산	010-6542-7412	영업부	대리	2000000	150000	2150000
1039	고순정	800504-2000032	2003-12-28	경기	010-2587-7895	영업부	대리	2010000	160000	2170000
1040	박세열	790509-1635214	2000-09-10	경북	016-4444-7777	인사부	대리	2100000	130000	2230000
1041	문길수	721217-1951357	2001-12-10	충남	016-4444-5555	자재부	과장	2300000	150000	2450000
1046	허경운	760105-1458752	1999-05-04	경남	017-3333-3333	총무부	부장	2650000	150000	2800000
1047	산마루	780505-1234567	2001-07-15	서울	018-0505-0505	영업부	대리	2100000	112000	2212000
1048	이기상	790604-1415141	2001-06-07	전남		개발부	대리	2050000	106000	2156000
1050	이미인	810403-2828287	2003-06-07	경기	011-8585-5252	홍보부	대리	1950000	103000	2053000
1051	권영미	790303-2155554	2000-06-04	서울	011-5555-7548	영업부	과장	2260000	104000	2364000
1056	전용재	800605-1456987	2004-08-13	인천	010-7549-8654	영업부	대리	1950000	200000	2150000
1057	이미경	780406-2003214	1998-02-11	경기	016-6542-7546	자재부	부장	2520000	160000	2680000
1058	김신제	800709-1321456	2003-08-08	인천	010-2415-5444	기획부	대리	1950000	180000	2130000
*/







--80. 총무부 직원들의 평균 수당보다 더 많은 수당을 받는 직원 정보 조회.



-- #1 총무부 평균 수당 구하기 (정수부)
SELECT ROUND(AVG(SUDANG), 0) "총무부평균수당"
FROM TBL_INSA
WHERE BUSEO LIKE '총무부';
--==>> 147429




-- #2 총무부 평균 수당보다 더 많은 수당을 받는 직원 정보 모두 조회하기

SELECT TI2.*
FROM TBL_INSA TI2
WHERE TI2.SUDANG
      >
      (
           SELECT ROUND(AVG(SUDANG), 0) "총무부평균수당"
            FROM TBL_INSA
            WHERE BUSEO LIKE '총무부'
      );
--==>>
/*
NUM	NAME	SSN	IBSADATE	CITY	TEL	BUSEO	JIKWI	BASICPAY	SUDANG
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000
1002	이순신	801007-1544236	2000-11-29	경기	010-4758-6532	총무부	사원	1320000	200000
1003	이순애	770922-2312547	1999-02-25	인천	010-4231-1236	개발부	부장	2550000	160000
1004	김정훈	790304-1788896	2000-10-01	전북	019-5236-4221	영업부	대리	1954200	170000
1005	한석봉	811112-1566789	2004-08-13	서울	018-5211-3542	총무부	사원	1420000	160000
1006	이기자	780505-2978541	2002-02-11	인천	010-3214-5357	개발부	과장	2265000	150000
1007	장인철	780506-1625148	1998-03-16	제주	011-2345-2525	개발부	대리	1250000	150000
1009	나윤균	810810-1552147	2003-10-10	경기	019-1111-2222	인사부	사원	840000	220400
1016	이상헌	781010-1666678	2001-11-29	경기	010-4526-1234	개발부	과장	2350000	150000
1017	엄용수	820507-1452365	2000-08-28	인천	010-3254-2542	개발부	사원	950000	210000
1019	박문수	780710-1985632	1999-12-10	서울	017-4747-4848	인사부	과장	2300000	165000
1022	이영숙	800501-2312456	2003-02-25	전남	017-5214-5282	기획부	대리	1960000	180000
1023	김인수	731211-1214576	1995-02-23	서울		영업부	부장	2500000	170000
1024	김말자	830225-2633334	1999-08-28	서울	011-5248-7789	기획부	대리	1900000	170000
1025	우재옥	801103-1654442	2000-10-01	서울	010-4563-2587	영업부	사원	1100000	160000
1026	김숙남	810907-2015457	2002-08-28	경기	010-2112-5225	영업부	사원	1050000	150000
1027	김영길	801216-1898752	2000-10-18	서울	019-8523-1478	총무부	과장	2340000	170000
1031	지재환	771115-1687988	2001-01-21	서울	019-5552-7511	기획부	부장	2450000	160000
1034	이정석	820505-1325468	2005-09-26	경기	011-3697-7412	기획부	사원	1100000	160000
1036	이재영	701126-2852147	2003-08-10	서울	011-9999-9999	자재부	사원	960400	190000
1037	최석규	770129-1456987	1998-10-15	인천	011-7777-7777	홍보부	과장	2350000	187000
1038	손인수	791009-2321456	1999-11-15	부산	010-6542-7412	영업부	대리	2000000	150000
1039	고순정	800504-2000032	2003-12-28	경기	010-2587-7895	영업부	대리	2010000	160000
1041	문길수	721217-1951357	2001-12-10	충남	016-4444-5555	자재부	과장	2300000	150000
1042	채정희	810709-2000054	2003-10-17	경기	011-5125-5511	개발부	사원	1020000	200000
1043	양미옥	830504-2471523	2003-09-24	서울	016-8548-6547	영업부	사원	1100000	210000
1044	지수환	820305-1475286	2004-01-21	서울	011-5555-7548	영업부	사원	1060000	220000
1045	홍원신	690906-1985214	2003-03-16	전북	011-7777-7777	영업부	사원	960000	152000
1046	허경운	760105-1458752	1999-05-04	경남	017-3333-3333	총무부	부장	2650000	150000
1056	전용재	800605-1456987	2004-08-13	인천	010-7549-8654	영업부	대리	1950000	200000
1057	이미경	780406-2003214	1998-02-11	경기	016-6542-7546	자재부	부장	2520000	160000
1058	김신제	800709-1321456	2003-08-08	인천	010-2415-5444	기획부	대리	1950000	180000
*/







--81. 직원 전체 평균 급여보다 많은 급여를 받는 직원의 수 조회.


-- #1 전체평균급여 구하기
SELECT ROUND(AVG(BASICPAY + SUDANG), 0) "전체평균급여"
FROM TBL_INSA;


-- #2 전체 평균급여보다 많은 급여를 받는 직원 정보 조회하기.
SELECT *
FROM TBL_INSA TI
WHERE (TI.BASICPAY + TI.SUDANG)
       >
      (
            SELECT ROUND(AVG(BASICPAY + SUDANG), 0) "전체평균급여"
            FROM TBL_INSA
      );


-- #3 인원수 구하기
SELECT COUNT(*) "평균급여많은직원수"
FROM TBL_INSA TI
WHERE (TI.BASICPAY + TI.SUDANG)
       >
      (
            SELECT ROUND(AVG(BASICPAY + SUDANG), 0) "전체평균급여"
            FROM TBL_INSA
      );
--==>> 
/*
평균급여많은직원수
27
*/



--82. '홍길동' 직원과 같은 부서의 직원 정보 조회.
--    단, 홍길동 직원의 부서가 바뀌더라도 작성된 쿼리문은 기능 수행이 가능하도록 조회.
    
-- #1 홍길동씨의 부서명 찾기
SELECT BUSEO "부서명"
FROM TBL_INSA
WHERE NAME LIKE '홍길동';
--==>> 기획부

-- #2 같은 부서인 직원 조회하기.


SELECT *
FROM TBL_INSA
WHERE BUSEO
      IN
      (
        SELECT BUSEO "부서명"
        FROM TBL_INSA
        WHERE NAME LIKE '홍길동'
      );
--==>>    
/*
부서명
기획부
*/



--
--83. '김신애' 직원과 같은 부서, 직위를 가진 직원 정보 조회.
--    단, 김신애 직원의 부서 및 직위가 바뀌더라도 작성된 쿼리문은 기능 수행이 가능하도록 조회.


SELECT BUSEO, JIKWI
FROM TBL_INSA
WHERE NAME LIKE '김신애';
--==>> 
/*
BUSEO	JIKWI
개발부	사원
*/

SELECT *
FROM TBL_INSA
WHERE (BUSEO, JIKWI)
       IN
       (
            SELECT BUSEO, JIKWI
            FROM TBL_INSA
            WHERE NAME LIKE '김신애' 
       );
--==>>
/*
NUM	NAME	SSN	IBSADATE	CITY	TEL	BUSEO	JIKWI	BASICPAY	SUDANG
1060	김신애	810809-2111111	2001-10-10	서울	011-4151-4444	개발부	사원	900000	102000
1059	임수봉	810809-2121244	2001-10-10	서울	011-4151-4154	개발부	사원	890000	102000
1049	이미성	830908-2456548	2000-04-07	인천	010-6654-8854	개발부	사원	1300000	130000
1042	채정희	810709-2000054	2003-10-17	경기	011-5125-5511	개발부	사원	1020000	200000
1035	정영희	831010-2153252	2002-05-16	인천		개발부	사원	1050000	140000
1021	홍길남	801010-1111111	2001-09-07	경기	011-9999-7575	개발부	사원	875000	120000
1018	이성길	801028-1849534	2004-08-08	전북	018-1333-3333	개발부	사원	880000	123000
1017	엄용수	820507-1452365	2000-08-28	인천	010-3254-2542	개발부	사원	950000	210000
1014	황진이	810707-2574812	2002-02-15	인천	010-3214-5467	개발부	사원	1100000	130000
*/




--84. 부서별 기본급이 가장 높은 사람 조회. (이름, 부서, 기본급)
--    단, 사원들의 기본급이 변경되더라도 작성된 쿼리문은 기능 수행이 가능하도록 조회.


-- 부서별 기본급 조회.
SELECT BUSEO,BASICPAY
FROM TBL_INSA
GROUP BY BUSEO,BASICPAY
ORDER BY BUSEO ASC;


-- 부서별 최대 기본급 조회

SELECT T.BUSEO, MAX(T.BASICPAY)
FROM
(
    SELECT BUSEO,BASICPAY
    FROM TBL_INSA
    GROUP BY BUSEO,BASICPAY
    ORDER BY BUSEO ASC
)T
GROUP BY T.BUSEO;


-- 부서별 최대 기본급을 갖는 사원을 찾기
-- (이름, 부서, 기본급)

SELECT TI.NAME "이름", TI.BUSEO "부서명", TI.BASICPAY "기본급"
FROM TBL_INSA TI
WHERE (TI.BUSEO, TI.BASICPAY)
       IN
      (SELECT T.BUSEO, MAX(T.BASICPAY)
        FROM
        (
            SELECT BUSEO,BASICPAY
            FROM TBL_INSA
            GROUP BY BUSEO,BASICPAY
            ORDER BY BUSEO ASC
        )T
        GROUP BY T.BUSEO
       );
--==>>
/*
이름	    부서명	기본급
허경운	총무부	2650000
이순애	개발부	2550000
김종서	영업부	2540000
홍길동	기획부	2610000
이미경	자재부	2520000
박문수	인사부	2300000
최석규	홍보부	2350000
*/









--85. 남, 여별 기본급 순위 조회.


-- 남여 기본급 조회하기
SELECT  CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                     THEN '남자'
                     WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                     THEN '여자'
                     ELSE '알수없음'
               END "성별"
       , BASICPAY "기본급"

FROM TBL_INSA
GROUP BY SUBSTR(SSN, 8, 1), BASICPAY;



-- 남여 기본급 순위 매기기


SELECT T.성별, T.기본급, RANK() OVER(ORDER BY T.기본급 DESC) "기본급순위"
FROM
(
    SELECT  CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                         THEN '남자'
                         WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                         THEN '여자'
                         ELSE '알수없음'
                   END "성별"
           , BASICPAY "기본급"
    
    FROM TBL_INSA
    GROUP BY SUBSTR(SSN, 8, 1), BASICPAY
)T
ORDER BY T.성별 ASC, 기본급순위 ASC;
--==>>
/*
성별	기본급	기본급순위
남자	2650000	1
남자	2610000	2
남자	2540000	4
남자	2500000	6
남자	2450000	7
남자	2350000	8
남자	2340000	9
남자	2300000	11
남자	2100000	14
남자	2050000	15
남자	1954200	19
남자	1950000	20
남자	1420000	24
남자	1320000	25
남자	1250000	27
남자	1100000	28
남자	1060000	30
남자	980000	34
남자	960000	36
남자	950000	37
남자	892000	41
남자	880000	43
남자	875000	45
남자	840000	46
여자	2550000	3
여자	2520000	5
여자	2304000	10
여자	2265000	12
여자	2260000	13
여자	2010000	16
여자	2000000	17
여자	1960000	18
여자	1950000	20
여자	1900000	22
여자	1601000	23
여자	1300000	26
여자	1100000	28
여자	1050000	31
여자	1020000	32
여자	1000000	33
여자	960400	35
여자	950000	37
여자	920000	39
여자	900000	40
여자	890000	42
여자	880000	43
*/






--86. 지역(CITY)별로 급여(기본급+수당) 1순위 직원만 조회.

-- 지역, 급여 조회하기
SELECT CITY "지역"
     , BASICPAY + SUDANG "급여"
FROM TBL_INSA;


-- 그룹화 해서 최대 급여를 받는 직원 구하기

SELECT T.지역, MAX(T.급여)
FROM
(   
    SELECT CITY "지역"
         , BASICPAY + SUDANG "급여"
    FROM TBL_INSA
)T
GROUP BY T.지역;

-- 지역별 최대 급여를 받는 직원을 찾기

SELECT *
FROM TBL_INSA TI
WHERE (TI.CITY, (TI.BASICPAY + TI.SUDANG))
       IN
       (
            SELECT T.지역, MAX(T.급여)
            FROM
            (   
                SELECT CITY "지역"
                     , BASICPAY + SUDANG "급여"
                FROM TBL_INSA
            )T
            GROUP BY T.지역
       );
       
--==>>
/*
NUM	NAME	SSN	IBSADATE	CITY	TEL	BUSEO	JIKWI	BASICPAY	SUDANG
1001	홍길동	771212-1022432	1998-10-11	서울	011-2356-4528	기획부	부장	2610000	200000
1003	이순애	770922-2312547	1999-02-25	인천	010-4231-1236	개발부	부장	2550000	160000
1004	김정훈	790304-1788896	2000-10-01	전북	019-5236-4221	영업부	대리	1954200	170000
1007	장인철	780506-1625148	1998-03-16	제주	011-2345-2525	개발부	대리	1250000	150000
1010	김종서	751010-1122233	1997-08-08	부산	011-3214-5555	영업부	부장	2540000	130000
1040	박세열	790509-1635214	2000-09-10	경북	016-4444-7777	인사부	대리	2100000	130000
1041	문길수	721217-1951357	2001-12-10	충남	016-4444-5555	자재부	과장	2300000	150000
1046	허경운	760105-1458752	1999-05-04	경남	017-3333-3333	총무부	부장	2650000	150000
1048	이기상	790604-1415141	2001-06-07	전남		개발부	대리	2050000	106000
1054	정상호	810705-1212141	1999-10-16	강원	016-1919-4242	홍보부	사원	980000	114000
1057	이미경	780406-2003214	1998-02-11	경기	016-6542-7546	자재부	부장	2520000	160000
*/




--87. 부서별 인원수가 가장 많은 부서 및 인원수 조회.


-- 부서별 인원수 확인
SELECT BUSEO "부서명"
     , COUNT(*) "인원수"
    FROM TBL_INSA
    GROUP BY BUSEO;


-- 부서별로 가장 많은 인원수 구함
SELECT MAX(T.인원수)
FROM
(
    SELECT BUSEO "부서명"
         , COUNT(*) "인원수"
    FROM TBL_INSA
    GROUP BY BUSEO
)T;

-- 가장 많은 인원수를 갖는 부서 조회

SELECT BUSEO "부서명"
     , COUNT(*) "인원수"
    FROM TBL_INSA
    GROUP BY BUSEO
    HAVING COUNT(*)
           IN
           (
                SELECT MAX(T.인원수)
                FROM
                (
                    SELECT BUSEO "부서명"
                         , COUNT(*) "인원수"
                    FROM TBL_INSA
                    GROUP BY BUSEO
                )T
           );

--==>> 
/*
부서명	인원수
영업부	16
*/



--88. 지역(CITY)별 인원수가 가장 많은 지역 및 인원수 조회.



-- 지역별 인원수 확인
SELECT CITY "지역명"
     , COUNT(*) "인원수"
    FROM TBL_INSA
    GROUP BY CITY;


-- 지역별로 가장 많은 인원수 구함
SELECT MAX(T.인원수)
FROM
(
   SELECT CITY "지역명"
     , COUNT(*) "인원수"
    FROM TBL_INSA
    GROUP BY CITY
)T;

-- 가장 많은 인원수를 갖는 지역 조회

SELECT CITY "지역명"
     , COUNT(*) "인원수"
    FROM TBL_INSA
    GROUP BY CITY
    HAVING COUNT(*)
           IN
           (
               SELECT MAX(T.인원수)
                FROM
                (
                   SELECT CITY "지역명"
                     , COUNT(*) "인원수"
                    FROM TBL_INSA
                    GROUP BY CITY
                )T
           );

--==>>
/*
지역명	인원수
서울     	20
*/



89. 지역(CITY)별 평균 급여(BASICPAY + SUDANG)가
    가장 높은 지역 및 평균급여 조회.
    
    


-- 지역별 평균급여 확인
SELECT CITY "지역명"
     , ROUND(AVG(BASICPAY + SUDANG), 0) "평균급여"
    FROM TBL_INSA
    GROUP BY CITY;


-- 지역별로 가장 많은 평균급여 구함
SELECT MAX(T.평균급여)
FROM
(
    SELECT CITY "지역명"
     , ROUND(AVG(BASICPAY + SUDANG), 0) "평균급여"
    FROM TBL_INSA
    GROUP BY CITY
)T;


-- 가장 많은 평균급여를 갖는 지역 조회

SELECT CITY "지역명"
     , ROUND(AVG(BASICPAY + SUDANG), 0) "평균급여"
    FROM TBL_INSA
    GROUP BY CITY
    HAVING ROUND(AVG(BASICPAY + SUDANG), 0)
           IN
           (
               SELECT MAX(T.평균급여)
                FROM
                (
                    SELECT CITY "지역명"
                     , ROUND(AVG(BASICPAY + SUDANG), 0) "평균급여"
                    FROM TBL_INSA
                    GROUP BY CITY
                )T
           );
--==>>
/*
지역명	평균급여
경남	    2800000
*/



90. 여자 인원수가 가장 많은 부서 및 인원수 조회.

-- 아 더 하고 싶어요..ㅠㅠㅠㅠ....................

/*
CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                         THEN '남자'
                         WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                         THEN '여자'
                         ELSE '알수없음'
                   END "성별"
*/


-- #1 부서별 여자 인원수 구하기
SELECT BUSEO
     , COUNT(*)
FROM TBL_INSA
WHERE SUBSTR(SSN, 8, 1) IN ('2', '4')
GROUP BY  BUSEO, SUBSTR(SSN, 8, 1);




-- #2 부서별 최대 여자 인원수 구하기


SELECT MAX(T.여자인원수)
FROM
(
    SELECT BUSEO "부서명"
     , COUNT(*) "여자인원수"
    FROM TBL_INSA
    WHERE SUBSTR(SSN, 8, 1) IN ('2', '4')
    GROUP BY  BUSEO, SUBSTR(SSN, 8, 1)
) T;


-- # 부서별 남녀 상관없이 인원수 구하기
SELECT BUSEO
     ,CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                         THEN '남자'
                         WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                         THEN '여자'
                         ELSE '알수없음'
                   END "성별"
     , COUNT(*)
FROM TBL_INSA
GROUP BY  BUSEO, SUBSTR(SSN, 8, 1);

---------------------------

-- # 최대 여자 인원수를 갖는 부서, 여자인원수, 성별 조회하기

SELECT T.부서명, T.인원수, T.성별
FROM
(
    SELECT BUSEO "부서명"
     ,CASE  WHEN SUBSTR(SSN, 8, 1) IN ('1', '3')
                         THEN '남자'
                         WHEN SUBSTR(SSN, 8, 1) IN ('2', '4')
                         THEN '여자'
                         ELSE '알수없음'
                   END "성별"
     , COUNT(*) "인원수"
    FROM TBL_INSA
    GROUP BY  BUSEO, SUBSTR(SSN, 8, 1)
) T
GROUP BY T.부서명, T.인원수, T.성별
HAVING T.인원수 
       IN
       (
            SELECT MAX(T.여자인원수)
            FROM
            (
                SELECT BUSEO "부서명"
                 , COUNT(*) "여자인원수"
                FROM TBL_INSA
                WHERE SUBSTR(SSN, 8, 1) IN ('2', '4')
                GROUP BY  BUSEO, SUBSTR(SSN, 8, 1)
            ) T
       )
       AND
       T.성별 = '여자';

-----
--==>>
/*
부서명	인원수	성별
영업부	8	여자
개발부	8	여자
*/






--91. 지역별 인원수 순위 조회.



SELECT CITY "지역명"
     , COUNT(*) "지역별인원수"
FROM TBL_INSA
GROUP BY CITY;


SELECT T.지역명, T.지역별인원수
     , RANK() OVER(ORDER BY T.지역별인원수 DESC) "지역별인원수순위"
FROM
(
    SELECT CITY "지역명"
     , COUNT(*) "지역별인원수"
    FROM TBL_INSA
    GROUP BY CITY
)T;
--==>>
/*
지역명	지역별인원수	지역별인원수순위
서울	20	1
경기	13	2
인천	9	3
전북	5	4
전남	3	5
부산	3	5
제주	2	7
강원	2	7
경남	1	9
경북	1	9
충남	1	9
*/




--92. 지역별 인원수 순위 조회하되 5순위까지만 출력.


SELECT T.지역명, T.지역별인원수
     , RANK() OVER(ORDER BY T.지역별인원수 DESC) "지역별인원수순위"
FROM
(
    SELECT CITY "지역명"
     , COUNT(*) "지역별인원수"
    FROM TBL_INSA
    GROUP BY CITY
)T;


SELECT T2.*
FROM
(
   SELECT T.지역명, T.지역별인원수
     , RANK() OVER(ORDER BY T.지역별인원수 DESC) "지역별인원수순위"
    FROM
    (
        SELECT CITY "지역명"
         , COUNT(*) "지역별인원수"
        FROM TBL_INSA
        GROUP BY CITY
    )T
    
)T2
WHERE T2.지역별인원수순위 <= 5;
--==>>
/*
지역명	지역별인원수	지역별인원수순위
서울	20	1
경기	13	2
인천	9	3
전북	5	4
부산	3	5
전남	3	5
*/



--
--93. 이름, 부서, 출신도, 기본급, 수당, 기본급+수당, 세금, 실수령액 조회
--    단, 세금: 총급여가 250만원 이상이면 2%, 200만원 이상이면 1%, 나머지 0.
--    실수령액: 총급여-세금


-- 요구하는 것 중 바로 출력 가능한 것들 조회.
SELECT NAME, BUSEO, CITY, BASICPAY, SUDANG, (BASICPAY + SUDANG)
FROM TBL_INSA;


-- 세금 구하기


-- 1%를 부과할 경우 (200만원 이상, 250만원 미만)
SELECT (BASICPAY + SUDANG) - (BASICPAY + SUDANG) * ((100 - 1) / 100)
FROM TBL_INSA;


-- 2%를 부과할 경우 (250만원 이상)
SELECT (BASICPAY + SUDANG) - (BASICPAY + SUDANG) * ((100 - 2) / 100)
FROM TBL_INSA;



SELECT CASE WHEN (BASICPAY + SUDANG) >= 2500000
            THEN (BASICPAY + SUDANG) - (BASICPAY + SUDANG) * ((100 - 2) / 100)
            WHEN (BASICPAY + SUDANG) >= 2000000
            THEN (BASICPAY + SUDANG) - (BASICPAY + SUDANG) * ((100 - 1) / 100)
            ELSE 0
        END AS "세금"
FROM TBL_INSA;


-- 실수령액 테스트
SELECT (TI.BASICPAY + TI.SUDANG) - T.세금
FROM
TBL_INSA TI
INNER JOIN
(
    SELECT CASE WHEN (BASICPAY + SUDANG) >= 2500000
            THEN (BASICPAY + SUDANG) - (BASICPAY + SUDANG) * ((100 - 2) / 100)
            WHEN (BASICPAY + SUDANG) >= 2000000
            THEN (BASICPAY + SUDANG) - (BASICPAY + SUDANG) * ((100 - 1) / 100)
            ELSE 0
        END AS "세금"
        , SSN "주민번호"
    FROM TBL_INSA
)T
ON TI.SSN = T.주민번호;




---------------


-- 세금까지 합치기

SELECT NAME "이름"
     , BUSEO "부서명"
     , CITY "지역명"
     , BASICPAY "기본급"
     , SUDANG "수당"
     , (BASICPAY + SUDANG) "총급여"
     , CASE WHEN (BASICPAY + SUDANG) >= 2500000
            THEN (BASICPAY + SUDANG) - (BASICPAY + SUDANG) * ((100 - 2) / 100)
            WHEN (BASICPAY + SUDANG) >= 2000000
            THEN (BASICPAY + SUDANG) - (BASICPAY + SUDANG) * ((100 - 1) / 100)
            ELSE 0
        END AS "세금"
     
FROM TBL_INSA;



-- 실수령액 계산하기 위해, 위의 쿼리문을 서브 쿼리로 지정.


SELECT LASTT.*
     , (TI.BASICPAY + TI.SUDANG) - LASTT.세금 "실수령액"
FROM 
TBL_INSA TI
INNER JOIN
(
    SELECT NAME "이름"
     , BUSEO "부서명"
     , CITY "지역명"
     , BASICPAY "기본급"
     , SUDANG "수당"
     , (BASICPAY + SUDANG) "총급여"
     , CASE WHEN (BASICPAY + SUDANG) >= 2500000
            THEN (BASICPAY + SUDANG) - (BASICPAY + SUDANG) * ((100 - 2) / 100)
            WHEN (BASICPAY + SUDANG) >= 2000000
            THEN (BASICPAY + SUDANG) - (BASICPAY + SUDANG) * ((100 - 1) / 100)
            ELSE 0
        END AS "세금"
      , SSN "주민번호"
     
    FROM TBL_INSA
) LASTT
ON TI.SSN = LASTT.주민번호;

--==>>
/*
이름	부서명	지역명	기본급	수당	총급여	세금	주민번호	실수령액
홍길동	기획부	서울	2610000	200000	2810000	56200	771212-1022432	2753800
이순신	총무부	경기	1320000	200000	1520000	0	801007-1544236	1520000
이순애	개발부	인천	2550000	160000	2710000	54200	770922-2312547	2655800
김정훈	영업부	전북	1954200	170000	2124200	21242	790304-1788896	2102958
한석봉	총무부	서울	1420000	160000	1580000	0	811112-1566789	1580000
이기자	개발부	인천	2265000	150000	2415000	24150	780505-2978541	2390850
장인철	개발부	제주	1250000	150000	1400000	0	780506-1625148	1400000
김영년	홍보부	서울	950000	145000	1095000	0	821011-2362514	1095000
나윤균	인사부	경기	840000	220400	1060400	0	810810-1552147	1060400
김종서	영업부	부산	2540000	130000	2670000	53400	751010-1122233	2616600
유관순	영업부	서울	1020000	140000	1160000	0	801010-2987897	1160000
정한국	홍보부	강원	880000	114000	994000	0	760909-1333333	994000
조미숙	홍보부	경기	1601000	103000	1704000	0	790102-2777777	1704000
황진이	개발부	인천	1100000	130000	1230000	0	810707-2574812	1230000
이현숙	총무부	경기	1050000	104000	1154000	0	800606-2954687	1154000
이상헌	개발부	경기	2350000	150000	2500000	50000	781010-1666678	2450000
엄용수	개발부	인천	950000	210000	1160000	0	820507-1452365	1160000
이성길	개발부	전북	880000	123000	1003000	0	801028-1849534	1003000
박문수	인사부	서울	2300000	165000	2465000	24650	780710-1985632	2440350
유영희	자재부	전남	880000	140000	1020000	0	800304-2741258	1020000
홍길남	개발부	경기	875000	120000	995000	0	801010-1111111	995000
이영숙	기획부	전남	1960000	180000	2140000	21400	800501-2312456	2118600
김인수	영업부	서울	2500000	170000	2670000	53400	731211-1214576	2616600
김말자	기획부	서울	1900000	170000	2070000	20700	830225-2633334	2049300
우재옥	영업부	서울	1100000	160000	1260000	0	801103-1654442	1260000
김숙남	영업부	경기	1050000	150000	1200000	0	810907-2015457	1200000
김영길	총무부	서울	2340000	170000	2510000	50200	801216-1898752	2459800
이남신	인사부	제주	892000	110000	1002000	0	810101-1010101	1002000
김말숙	총무부	서울	920000	124000	1044000	0	800301-2020202	1044000
정정해	총무부	부산	2304000	124000	2428000	24280	790210-2101010	2403720
지재환	기획부	서울	2450000	160000	2610000	52200	771115-1687988	2557800
심심해	자재부	전북	880000	108000	988000	0	810206-2222222	988000
김미나	영업부	서울	1020000	104000	1124000	0	780505-2999999	1124000
이정석	기획부	경기	1100000	160000	1260000	0	820505-1325468	1260000
정영희	개발부	인천	1050000	140000	1190000	0	831010-2153252	1190000
이재영	자재부	서울	960400	190000	1150400	0	701126-2852147	1150400
최석규	홍보부	인천	2350000	187000	2537000	50740	770129-1456987	2486260
손인수	영업부	부산	2000000	150000	2150000	21500	791009-2321456	2128500
고순정	영업부	경기	2010000	160000	2170000	21700	800504-2000032	2148300
박세열	인사부	경북	2100000	130000	2230000	22300	790509-1635214	2207700
문길수	자재부	충남	2300000	150000	2450000	24500	721217-1951357	2425500
채정희	개발부	경기	1020000	200000	1220000	0	810709-2000054	1220000
양미옥	영업부	서울	1100000	210000	1310000	0	830504-2471523	1310000
지수환	영업부	서울	1060000	220000	1280000	0	820305-1475286	1280000
홍원신	영업부	전북	960000	152000	1112000	0	690906-1985214	1112000
허경운	총무부	경남	2650000	150000	2800000	56000	760105-1458752	2744000
산마루	영업부	서울	2100000	112000	2212000	22120	780505-1234567	2189880
이기상	개발부	전남	2050000	106000	2156000	21560	790604-1415141	2134440
이미성	개발부	인천	1300000	130000	1430000	0	830908-2456548	1430000
이미인	홍보부	경기	1950000	103000	2053000	20530	810403-2828287	2032470
권영미	영업부	서울	2260000	104000	2364000	23640	790303-2155554	2340360
권옥경	기획부	경기	1020000	105000	1125000	0	820406-2000456	1125000
김싱식	자재부	전북	960000	108000	1068000	0	800715-1313131	1068000
정상호	홍보부	강원	980000	114000	1094000	0	810705-1212141	1094000
정한나	영업부	서울	1000000	104000	1104000	0	820506-2425153	1104000
전용재	영업부	인천	1950000	200000	2150000	21500	800605-1456987	2128500
이미경	자재부	경기	2520000	160000	2680000	53600	780406-2003214	2626400
김신제	기획부	인천	1950000	180000	2130000	21300	800709-1321456	2108700
임수봉	개발부	서울	890000	102000	992000	0	810809-2121244	992000
김신애	개발부	서울	900000	102000	1002000	0	810809-2111111	1002000
*/




--94. 부서별 평균 급여를 조회하되, A, B, C 등급으로 나눠서 출력.
--    200만원 초과 - A등급
--    150~200만원  - B등급
--    150만원 미만 - C등급
    

-- 각 부서별로 평균 급여 구하기
SELECT BUSEO
     , ROUND(AVG(BASICPAY + SUDANG)) "평균급여"
FROM TBL_INSA
GROUP BY BUSEO;






-- 등급 매기기

SELECT T.*
     , CASE WHEN T.평균급여 > 2000000
            THEN 'A등급'
            WHEN T.평균급여 >= 1500000
            THEN 'B등급'
            WHEN T.평균급여 < 1500000
            THEN 'C등급'
            ELSE '알수없음'
        END "평균급여등급"
      
FROM
(
    SELECT BUSEO "부서명"
     , ROUND(AVG(BASICPAY + SUDANG)) "평균급여"
    FROM TBL_INSA
    GROUP BY BUSEO
)T
ORDER BY 평균급여등급 ASC;
--==>>
/*
부서명	평균급여	평균급여등급
기획부	2020714	A등급
개발부	1528786	B등급
영업부	1753763	B등급
홍보부	1579500	B등급
인사부	1689350	B등급
자재부	1559400	B등급
총무부	1862286	B등급
*/




--
--95. 기본급+수당이 가장 많은 사람의 이름, 기본급+수당 조회.
--    MAX() 함수, 하위 쿼리 이용.



SELECT *
FROM TBL_INSA;


SELECT MAX(BASICPAY + SUDANG) "최대급여"
FROM TBL_INSA;


SELECT NAME "이름", BASICPAY + SUDANG "기본급+수당"
FROM TBL_INSA
WHERE (BASICPAY + SUDANG)
      IN
      (
        SELECT MAX(BASICPAY + SUDANG) "최대급여"
        FROM TBL_INSA
      );

--==>> 
/*
이름	    기본급+수당
홍길동	2810000
*/



----------------------------------------------------------------------------



-- 다 풀었어요~!!!!!!!!!!!!!!!!!!!!!!!!
-- 와~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~