-- EMP, DEPT 테이블을 기준해서, 잘못된 SQL문을 모두 고르고, 실행되지 않는 이유를 작성하시오.
-- 1.1 O
SELECT EMPNO, EMPNO EMP FROM EMP;
-- 1.2 O
SELECT EMPNO AS EMPNO, SAL+HIREDATE FROM EMP;
-- 1.3 O
SELECT EMPNO, 'DEPTN' FROM EMP;
-- 1.4 X (원인은 날짜를 문자형태로 변환처리하는 구분에서 발생했는데 TO_DATE 대신 TO_CHAR를 사용해야 해결이 됩니다)
SELECT TO_DATE(HIREDATE,'YYYYMMDD') FROM EMP;
-- 1.5 O
SELECT SAL + COMM FROM EMP ORDER BY 1;
-- 1.6 O
SELECT TO_CHAR(HIREDATE,'YYYYMMDD') FROM EMP WHERE DEPTNO = '40';
-- 1.7 X ("" 이게 아닌 ''으로 사용해야 작성이 가능함)
SELECT ENAME || "님 환영합니다." FROM EMP;
-- 1.8 X (그룹바이 표현식이 잘못되었습니다)
SELECT ROWNUM FROM EMP GROUP BY DEPTNO;
-- 1.9 X (테이블이 잘못되었으며, 집계함수를 사용하려면 그룹바이를 사용해야 합니다. )
SELECT DEPTNO, SUM(SAL), EMPNO FROM DEPT;
-- 1.10 X (집계함수를 사용하려면 GROUP BY절이 필요하며, HAVING절을 사용해야 합니다. )
SELECT SAL FROM EMP WHERE AVG(SAL) > 2300;
-- 1.11 X (열의 정의가 애매합니다)
SELECT A.EMPNO, A.DEPTNO, B.DNAME FROM EMP A INNER JOIN DEPT B ON A.DEPTNO = B.DEPTNO;
-- 1.12 O
SELECT ENAME, SAL, DEPTNO FROM EMP ORDER BY JOB;
-- 1.13 O
SELECT EMPNO, ENAME FROM EMP UNION ALL SELECT DEPTNO, DNAME FROM DEPT;
-- 1.14 O
SELECT EMPNO, DEPTNO FROM EMP WHERE SAL+NVL(COMM,0) > 2500;
-- 1.15 X (CONNECT BY 절을 사용해야합니다.) ???
SELECT ROWID, LEVEL, DEPTNO FROM DEPT;
-- 1.16 O
SELECT MGR FROM EMP GROUP BY MGR HAVING COUNT(COMM) > 3;
-- 1.17 X (정렬조건에 필요한 컬럼명외에 존재하는 컬럼명이 있기때문에 안됩니다)
SELECT JOB FROM EMP GROUP BY JOB ORDER BY JOB, DEPTNO;
-- 1.18 X (정렬조건 오류, 그룹바이에 쓰인 컬럼이랑 셀렉트문 컬럼이랑 같지 않기때문에)
SELECT DEPTNO, (SAL*12) AS YEAR_SAL FROM EMP GROUP BY DEPTNO, SAL ORDER BY JOB, DEPTNO;
-- 1.19 X (SELECT문에는 SAL GROUP BY 절에는 SAL*12가 다르기 때문에)
SELECT DEPTNO, SAL AS YEAR_SAL FROM EMP GROUP BY DEPTNO, SAL*12;
-- 1.21 X (인라인뷰에서 작성한 NVL(COMM,0)의 이름명명을 정해주지 않아서 검색 X)
SELECT COMM FROM (SELECT NVL(COMM,0) FROM EMP);
-- 1.22 X (그룹바이 조건은 HAVING 절을 사용해야 합니다)
SELECT COUNT(1) AS CN FROM EMP GROUP BY COUNT(*) > 1;
-- 1.23 O
SELECT EMPNO, DEPTNO, (SELECT MAX(DEPTNO) FROM DEPT Z WHERE Z.DEPTNO = A.DEPTNO) AS DNAME FROM EMP A;
-- 1.24 O
SELECT DEPTNO FROM EMP GROUP BY DEPTNO ORDER BY MAX(JOB);
-- 1.25 O
SELECT DEPTNO, MIN(SAL) FROM EMP GROUP BY DEPTNO ORDER BY MAX(JOB);
-- 1.26 O
SELECT DEPTNO FROM EMP GROUP BY DEPTNO ORDER BY (CASE WHEN DEPTNO = 10 THEN 1 ELSE 0 END);
-- 1.27 X (데이터 일관성이 없어서 X 사용하려면 TO_CHAR 형식으로 데이터 형식을 바꿔줘야한다)
SELECT EMPNO, CASE WHEN SAL <= 200 THEN SAL+300 ELSE '없음' END FROM EMP;
-- 다음 함수의 결과를 작성하시오.
-- SYSDATE에서 한달을 더함
SELECT TO_CHAR(SYSDATE+(INTERVAL '1' MONTH),'YYYYMMDD') FROM DUAL;
-- 둘다 소수점 자리를 올리거나 내리는 함수인데 -1을 함으로써 정수첫번째자리수를 올리거나 내림
SELECT ROUND(38.52,-1) FROM DUAL;
SELECT TRUNC(24.32, -1) FROM DUAL;
SELECT CASE WHEN A.ST_NO = B.ST_NO THEN 1 END
FROM MAIN_SEYPARK A LEFT OUTER JOIN DETAIL_SEYPARK B
ON A.ST_NO = B.ST_NO
AND B.GUBUN = '2';
SELECT CASE WHEN A.ST_NO = B.ST_NO THEN 1 END
FROM MAIN_SEYPARK A LEFT OUTER JOIN DETAIL_SEYPARK B
ON A.ST_NO = B.ST_NO
WHERE B.GUBUN = '2';
'DB' 카테고리의 다른 글
[MSSQL] 숫자 정렬시 1,10,11,12 순으로 나올 때 (0) | 2022.01.27 |
---|---|
[SQLD] 스키마 (0) | 2021.05.21 |
[DB] 퀴즈 (0) | 2021.02.10 |
[DB] 기타 (0) | 2021.02.08 |
[DB] WITH 절 사용 예시 (0) | 2021.02.08 |