Advanced SQL 4

[SQL] Advanced SQL - TOP-n 질의 활용

Advanced SQL - TOP-n 질의 활용 1. emp 테이블에서, 급여(sal)를 가장 많이 받는 3명을 검색 하시오. (ROWNUM 활용) 해답 SQL문 -- ROWNUM : 행 번호를 컬럼으로 만들어서 붙혀줌-- 처음 3개의 행만 출력-- Subquery로 급여를 기준으로 먼저 정렬 시킨 뒤 3개의 행만 출력SELECT E.*FROM (SELECT * FROM emp ORDER BY sal DESC) EWHERE ROWNUM RANK() : 중복된 값이 있다면 동일한 RANK를 부여, 그 다음 번호는 동일한 수 만큼 더한 번호부터 부여 -> DENSE_RAN() : 중복된 RANK가 있어도 그 다음 번호로 추가- 위 3가지 함수들은 OVER() 절과 함께 사용 해야 함*/SELECT empno..

[SQL] Advanced SQL - 조인, 서브쿼리 활용

Advanced SQL - 조인, 서브쿼리 활용 ※ JOIN시 참고 사항 첫 번째 : 테이블이 모델링 될때 대부분 1 : N의 관계가 됨 두 번째 : 두 테이블이 JOIN될 때 다른 테이블에 중복이 되는 값이 있는 경우가 있음 -> 회원 테이블에는 1명이 유일 하지만 -> 주문 정보 테이블에는 해당 회원이 여러번 나올 수 있음 세 번째 : 중복되는 값이 있는 테이블을 FROM절에 올려 두고 JOIN을 시도하면 해당 경우의 수 만큼의 행이 만들어 짐 -> M : N의 관계가 만들어져 M * N의 행이 만들어 짐 네 번째 : JOIN을 시도 할 때 조건절에 오는 조건은 무조건 두 테이블 관의 관계를 작성 다섯 번째 : JOIN문장이 실행 될 때 Subquery를 적절히 이용해서 테이블의 수를 먼저 GROUP..

[SQL] Advanced SQL - 날짜 함수 활용

Advanced SQL - 날짜 함수 활용 01. emp테이블에서, 입사 일자(hiredate)컬럼을 이용하여 연도, 월/일, 요일, 분기를 검색하시오. 단, 입사 일자는 월요일 부터 일요일 순으로 정렬합니다.해답 SQL문 SELECT empno, ename, TO_CHAR(hiredate,'YYYY') Year, TO_CHAR(hiredate,'DD, Month') AS "Date", TO_CHAR(hiredate,'Day') Day, TO_CHAR(hiredate, 'Q') QuarterFROM empORDER BY TO_CHAR(hiredate-1,'D');-- 실행 결과-- 14 rows selected. 02. emp 테이블에서 20번 부서에 근무하는 사원들을 입사 일자를 기준으로 검색 하시오...

[SQL] Advanced SQL - 기본적인 SELECT 명령문 작성

Advanced SQL - 기본적인 SELECT 명령문 작성 수정(2019-01-04 수정) ※ SQL명령어 만드는 팁 첫 번째 : 어떤 테이블의 정보를 원하는지를 생각 할 것-> FROM절에 있는 데이터만 화면에 출력할 수 있음-> 검색 대상의 결과가 올라가는 곳이 FROM절 이라고 할 수 있음 두 번째 : WHERE절에 어떤 조건이 들어갈 지 생각 할 것-> 속도를 감안 한다면, 테이블에 있는 컬럼의 데이터 타입을 확인 할 것-> 'DESC 테이블' 로 컬럼의 데이터 타입을 확인할 수 있음-> 보통 WHERE절에 항상 '1 = 1'이라는 무의미한 식을 넣고 나머지 조건을 AND로 붙힘--> 서비스를 해 줄때, 처음에는 모든 항목을 보여 준 뒤에 필터링(AND조건)을 해 주기 때문--> 추가되는 조건을..