CoDream

[NCS전공교과] SQL활용 (문제해결시나리오) 본문

TEST (오답노트)

[NCS전공교과] SQL활용 (문제해결시나리오)

코잠 2024. 4. 3. 22:04
728x90
반응형

1.문제 1.   2001020413_19v4.1 기본 SQL 작성하기
점수 (40.0점)
아래의 SQL구문은 부서 별 평균 월급이 2800000을 초과하는 부서를 조회한 것이다.
결과가 올바르지 않다고 할 때, 그 원인(20점)과 올바르게 수정한 조치사항(20점)을 각각 항목에 맞게 기술하시오. (총 40점)

 

SELECT DEPT, SUM(SALARY) 합계, FLOOR(AVG(SALARY)) 평균, COUNT(*) 인원수
FROM EMP
WHERE SALARY > 2800000
GROUP BY DEPT
ORDER BY DEPT ASC;

본인답변 결과가 올바르지 않다고 할 때, 그 원인(20점)
그룹의 조건을 주는데 WHERE절에 주었음.
WHERE에는 개인함수 조건을 줄 때 적어야함.
모범답안 GROUP BY로 묶인그룹에 조건을 추가하기위해 HAVING절에 조건이 추가되어야 한다.
본인답변 바르게 수정한 조치사항(20점)
//부서 별 평균 월급이 2800000을 초과하는 부서
SELECT DEPT, SUM(SALARY) 합계
    , FLOOR(AVG(SALARY)) 평균
    , COUNT(*) 인원수
FROM EMP
GROUP BY DEPT
HAVING FLOOR(AVG(SALARY)) > 2800000
ORDER BY DEPT ASC;
WHERE절의 조건을 삭제 후 HAVING절에 추가해야함.
모범답안 SELECT DEPT, SUM(SALARY) 합계, FLOOR(AVG(SALARY)) 평균, COUNT(*) 인원수
FROM EMP
GROUP BY DEPT
HAVING FLOOR(AVG(SALARY)) > 2800000
ORDER BY DEPT ASC;

 

 

2. 2001020413_19v4.2 고급 SQL 작성하기 점수 (60.0점)
ROWNUM을 이용해서 월급이 가장 높은 3명을 뽑을려고 하였으나, 올바른 결과가 조회 되지 않았다.
결과가 잘못 조회된 이유를 [원인](30점)에 기술하고, 아래의 구문을 수정하여 
[조치내용](30점)에 기술하시오. (총 60점)

 

[SQL구문]
SELECT ROWNUM, EMPNAME, SAL
FROM EMP
WHERE ROWNUM <= 3
ORDER BY SAL DESC;

본인답변 결과가 잘못 조회된 이유를 [원인](30점)
WHERE 절에서 ROWNUM을 단독으로 사용하면 데이터가 정렬되기 전(EMP 기본 테이블에서)에 ROWNUM이라는 조건이 부여됨.
한번 사용할 예정이면 서브쿼리를 여러번 사용할 예정이라면 뷰를 이용해 
가상의 테이블을 만들어준 후 FROM에 적어야함.
모범답안 해석순서상 ORDER BY 절 전에 상위 3명을 뽑기 때문에 원하는 결과가 나오지 않음
본인답변 아래의 구문을 수정하여 [조치내용](30점)
SELECT ROWNUM, EMPNAME, SAL
FROM (
    SELECT EMPNAME, SAL
    FROM EMP
    ORDER BY SAL DESC
)
WHERE ROWNUM <= 3
;​
모범답안 SELECT ROWNUM,EMPNAME,SAL
FROM (SELECT *
FROM EMP
ORDER BY SAL DESC)
WHERE ROWNUM <=3;

 

 

 

728x90
반응형