교육 23일차

권재현·2021년 4월 15일
0

교육

목록 보기
16/49

1. 중복제거

  • DISTINCT
    • GROUP BY 묶어서 가능하나 비추천 잊어버리자
  • 기본형태
    • SELECT DISTICNT ~~~
    • FROM

※ 중복을 안 발생하게 만드는 게 제일 좋다.

--중복 제거 전
SELECT  MGR
FROM EMP
WHERE JOB = 'SALESMAN'
;
--출력: 7698,7698,7698,7698
	
--중복제거
SELECT DISTINCT MGR
FROM EMP
WHERE JOB = 'SALESMAN'
;
--출력: 7698

2.UNION - 데이터를 합친다. , 통계 시 많이 사용

  • JOIN은 컬럼 기반 그래서 옆으로 늘어남
  • UNION은 ROW 기반 그래서 위아래로 늘어남

※ 주의사항

  • 각 쿼리결과의 COLUMN 개수와 타입이 동일해야한다.
  • COLUMN 명은 첫 쿼리를 따라간다.

종류
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줄

UNION 연도별 입사자 수, 월별 입사자 수 데이터

--연도별 입사자 수, 월별 입사자 수 데이터
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에 생각을 못했을까? 분명히 충분히 응용 가능 했는데, 다시한번 복습의 중요성을 깨달은 하루다.

HR 테이블 정리

 오늘 부터 새로 실습에 쓸 테이블에 대해서 샘이 정리해주신 그림이다.
수업을 들으면서, 아오 테이블걍이 너무 갑자기 많아 졌다고, 생각이 들면서 이정도도 하다보면 적응하겠지 라는 생각을 했다. 결론은 겁먹고 말고 일단해보자 라는 거다. 김연아님 말씀하셨다. 막상 가보면 별거 없다고 !!

22일 후기가 없는 이유는 시험도보고, 다행히 통과는 했지만, 결과...의도파악을 실패에 턱걸이로 통과했다. ㅠㅠ언제까지 의도파악을 못할 것인가 ㅋㅋ그리고 시험다음에는 하루 종일 실습 Day 여서 올릴게 없었다. 실습 문제에 대해서는 자세하게 정리해서 문제풀이에 올릴 예정이다.

맨위로 이동!!!

profile
호텔리어 출신 비전공자

0개의 댓글