문제: 질의 결과처럼 데이터를 추출 할 수 있도록 sql 작성 

 

1)생년월일이 20120101 에서 20151231 사이인 쌍둥이 자녀를 가진 임직원을 구하세요.
 
[주어진 질의결과]

 

[SQL 코드]

SELECT  f1.emp_no AS 직원번호
      ,f1.fam_nm AS 쌍둥이1
      ,f2.fam_nm AS 쌍둥이2
FROM 
  (SELECT *
   FROM fam_c
   WHERE birth_ymd BETWEEN '20120101' AND '20151231'
   AND rel_type_cd = 'A27') f1
   ,fam_c f2
WHERE f1.emp_no = f2.emp_no
      AND f1.birth_ymd = f2.birth_ymd
      AND f1.fam_nm <> f2.fam_nm;
[제가 한 질의결과]


 

2) . 20210321 기준으로 재직중인 임직원이며. 생년월일이 20120101 에서 20151231인 자녀를 가진 임직원을 구하는 sql을 작성하세요.

 

[주어진 질의결과]

[SQL 코드]

SELECT  e.emp_no AS 직원번호
      ,f.fam_nm AS 자녀성명
      ,f.birth_ymd AS 자녀생년월일 
FROM emp_c e
   INNER JOIN fam_c f on e.emp_no = f.emp_no
WHERE e.retire_ymd >= '20210321' 
     AND f.birth_ymd BETWEEN '20120101' AND '20151231'
     AND f.rel_type_cd = 'A27';

[제가 한 질의결과]


3) . 20210321 기준으로 재직중인 임직원이며. 사내부부인 임직원의 직원번호를 구하는 sql을 작성하세요.

 

[주어진 질의결과]

[SQL 코드]

SELECT e.emp_no AS EMP_NO
FROM emp_c e
    INNER JOIN fam_rel_c fam_r ON e.emp_no = fam_r.emp_no
WHERE e.retire_ymd >= '20210321' 
     AND fam_r.end_ymd >= '20210321' 
     AND fam_r.rel_type_cd IN ('A02', 'A18')

 

[제가 한 질의결과]


3-2) . 현재 날짜 기준 재직중인 “이씨 성"을 가진 직원의 자녀명수가 몇 명인지 리스트를 만드세요.

 

[SQL 코드]

SUBSTR  사용

SELECT emp.emp_no AS 직원번호 
     , emp.emp_nm AS 직원명
     , COUNT(*) AS 자녀명수
FROM emp_c emp
    INNER JOIN fam_c fam ON emp.emp_no = fam.emp_no
WHERE SUBSTR(emp.emp_nm, 1, 1) = '이'
      AND SYSDATE BETWEEN HIRE_YMD AND RETIRE_YMD
      AND rel_type_cd = 'A27'
GROUP BY emp.emp_no, emp.emp_nm ;

 

LIKE 사용 

SELECT emp.emp_no AS 직원번호 
     , emp.emp_nm AS 직원명
     , COUNT(*) AS 자녀명수
FROM emp_c emp
    INNER JOIN fam_c fam ON emp.emp_no = fam.emp_no
WHERE emp.emp_nm LIKE '이%'
      AND SYSDATE BETWEEN HIRE_YMD AND RETIRE_YMD
      AND rel_type_cd = 'A27'
GROUP BY emp.emp_no, emp.emp_nm ;

 

[제가 한 질의결과]

 


 

3-3) . 자녀 명수가 2명 이상인 직원의 리스트를 구하세요.  (직원번호 / 성명 / 자녀명수 ) 

 

[SQL 코드]

SELECT e.emp_no AS 직원번호
      ,e.emp_nm AS 직원성명
      ,COUNT(*) AS 자녀명수
FROM emp_c e
     INNER JOIN fam_c f ON e.emp_no = f.emp_no 
WHERE f.rel_type_cd = 'A27'
GROUP BY e.emp_no, e.emp_nm
HAVING  COUNT(*) >= 2;

[제가 한 질의결과]


 

3-4) . 현재 기준 조직의 부서별 직원이 몇 명인지 구하는 sql을 작성하세요. (조직코드, 조직명, 직원수)

 

[SQL 코드]

SELECT org.org_cd AS 조직코드 
     , org.org_nm AS 조직명
     , COUNT(emp.emp_no) AS 직원수
FROM org_c org
     INNER JOIN emp_c emp ON emp.org_cd = org.org_cd
WHERE SYSDATE BETWEEN STA_YMD AND END_YMD
GROUP BY org.org_cd, org.org_nm;

 

[제가 한 질의결과]

+ Recent posts