※ 중복을 안 발생하게 만드는 게 제일 좋다.
--중복 제거 전
SELECT MGR
FROM EMP
WHERE JOB = 'SALESMAN'
;
--출력: 7698,7698,7698,7698
--중복제거
SELECT DISTINCT MGR
FROM EMP
WHERE JOB = 'SALESMAN'
;
--출력: 7698
※ 주의사항
종류
1. UNION : 데이터를 합치면서 중복제거 한다.
2. UNION ALL : 데이터 합치면서 중복제거 안한다.
--UNION
SELECT ENAME, JOB, SAL
FROM EMP
UNION
SELECT ENAME AS 이름, JOB, SAL--밑에라서 별칭 작용 X,위에다 해줘야함
FROM EMP
;
--출력 : 14줄나온다
--UNION ALL
SELECT ENAME AS 이름, JOB, SAL
FROM EMP
UNION ALL
SELECT ENAME, JOB, SAL
FROM EMP
;
--출력 : 28줄
--연도별 입사자 수, 월별 입사자 수 데이터
SELECT TO_CHAR(HIREDATE, 'YY') AS D, COUNT(*) AS CNT, 'Y' AS GBN
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YY'), 'Y'
UNION
SELECT TO_CHAR(HIREDATE, 'MM') AS D, COUNT(*) AS CNT, 'M' AS GBN
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'MM'),'M'
;
--조건 퍼스트네임 첫글자 대문자
-- 라스트네임 1,7까지 그리고 공백 없게
SELECT FIRST_NAME, LAST_NAME, EMAIL,
SUBSTR(FIRST_NAME,1,1) ||
UPPER(SUBSTR(REPLACE(LAST_NAME,' ',''),1,7)) AS EM
FROM EMPLOYEES
;
공백처리에 대해서 방법을 몰라 접근을 못하고 있던 문제다.
왜 replace에 생각을 못했을까? 분명히 충분히 응용 가능 했는데, 다시한번 복습의 중요성을 깨달은 하루다.
오늘 부터 새로 실습에 쓸 테이블에 대해서 샘이 정리해주신 그림이다.
수업을 들으면서, 아오 테이블걍이 너무 갑자기 많아 졌다고, 생각이 들면서 이정도도 하다보면 적응하겠지 라는 생각을 했다. 결론은 겁먹고 말고 일단해보자 라는 거다. 김연아님 말씀하셨다. 막상 가보면 별거 없다고 !!
22일 후기가 없는 이유는 시험도보고, 다행히 통과는 했지만, 결과...의도파악을 실패에 턱걸이로 통과했다. ㅠㅠ언제까지 의도파악을 못할 것인가 ㅋㅋ그리고 시험다음에는 하루 종일 실습 Day 여서 올릴게 없었다. 실습 문제에 대해서는 자세하게 정리해서 문제풀이에 올릴 예정이다.