본문 바로가기

빡공단34

빡공단 22기 도전기 - SQL OUTER JOIN (23일차) OUTER-JOIN OUTER-JOIN()을 사용하면, EQUI-JOIN()으로 볼 수 없는 결과데이터를 볼 수 있다. 방식은 LEFT-JOIN(), RIGHT-JOIN()이 있으며, 기준 테이블을 왼쪽으로 할지 오른쪽으로 할지 결정한다. 1. LEFT JOIN() / OUTER JOIN() ( ANSI 표준 작성법 ) SELECT 컬럼명 FROM 테이블명1 LEFT/RIGHT OUTER JOIN 테이블명2 ON 테이블명1.컬럼명1 = 테이블명2.컬럼명2 WHERE 조건식 ; 왼쪽인 'employees'테이블을 기준으로 출력된다. 두 테이블의 결합하고자 하는 컬럼의 '합집합'이라고 생각하면 된다. 따라서 기준 테이블이 null값이어도 행이 출력된다. 2. JOIN SIGN을 이용한 결합 ( Oracle .. 2022. 12. 7.
빡공단 22기 도전기 - SQL JOIN (22일차) EQUI - JOIN 1. EQUI-JOIN (ANSI 표준 JOIN 방식) 서로 다른 테이블을 결합할 때, 각 테이블의 컬럼 간에 같은 필드값이 있는 경우만 출력 employees 테이블과 department 테이블을 join SELECT 필드명 FORM 테이블명1 INNER JOIN 테이블명2 ON 테이블명1.필드명 = 테이블명2.필드명 WHERE 조건식 ; department_id가 employees 테이블쪽 하나, departments 테이블쪽 하나로 2개가 표시된다. INNER JOIN()은 각 테이블에 존재하는 키값들의 교집합에 해당하는 값들만 출력한다. 따라서, 키값이 null값이라면 출력되지 않는다. JOIN() 된 테이블에서 컬럼을 SELECT() 할 경우, 그냥 컬럼명만 적으면 '정의가.. 2022. 12. 7.
빡공단 22기 도전기 - SQL 공공데이터 실습 (21일차) 공공데이터를 활용한 실습 서울시 CCTV설치현황, 비상벨 설치현황을 활용한 실습을 해본다. 1. 데이터 업로드 F5 키를 누르면 전체 스크립트를 실행한다. CCTV 비상벨 파일을 업로드 한다. 2. CCTV 데이터 먼저 기관명이 다르게 표시되어있기 때문에 전처리를 한다. 서울특별시를 빼고 '구'로 통일한다. 경찰서, 구청은 '구'로 통일한다. TRIM()으로 글자 앞 공백을 지운다. 설치 목적을 확인한다. 설치 목적 구분 데이터는 이후에 사용할 예정이니 따로 적어놓는다. 지역별 카메라 설치 수를 확인한다. 설치목적별 카메라 설치 수를 확인한다. CASE WHEN()을 사용하여, 설치목적이 '어린이보호'에 해당하는 경우의 '카메라대수'를 표시하고, 아닌 경우에는 0으로 표시한다. 이렇게 하면 설치목적별로 .. 2022. 12. 7.
빡공단 22기 도전기 - SQL 복합 함수 (20일차) 복합 함수 1. LPAD()를 활용한 시각화 1000단위로 ◆를 표시한다. 2. 복합함수 연습문제 : 연도별 입사자 수와 평균 급여 출력하기 먼저 입사 연도를 구해본다. GROUP BY()를 이용하여 연도별 입사자수, 평균연봉을 확인한다. ORDER BY()는 SELECT() 다음에 실행되기 때문에, SELECT()에서 지정한 별칭을 사용 가능하다. LPAD()로 시각화를 해본다. 3. 복합함수 연습문제 : 직원들의 이름, 급여, 부서번호, 직업정보, 근속연수 SYSDATE는 현재 시간을 표시한다. MONTHS_BETWEEN()을 사용하여, 입사일로부터 현재 시간까지의 근속연수를 계산한다. 개월수로 구한 후 /12를 하면 연수로 나타낼 수 있다. WHERE()를 이용하여 근속연수가 10년 이상인 사람만 .. 2022. 11. 30.
빡공단 22기 도전기 - SQL 그룹함수3 (19일차) 그룹함수 : Part 3 1. HAVING() 행(row) 데이터에서 필터링을 할 때는 WHERE()를 사용했지만, 집계된 결과에서 다시 필터링을 하려면 HAVING()을 사용한다. GROUP BY()로 집계 된 id의 건수에서 5초과인 값을 추출한다 순서는 GROUP BY() 다음에 위치한다.(순서는 꼭 지켜야 한다.) 1-1. 연습문제 SELECT : 5번 화면에 표시할 열을 지정한다. FROM : 1번 테이블을 불러온다 WHERE : 2번 테이블에서 행기준으로 필터링을 한다. GROUP BY : 3번 그룹으로 묶을 열을 지정한다. HAVING : 4번 추가로 집계 조건을 적용한다. ORDER BY : 6번 나열 순서를 정한다. WHERE()에서는 department_id기준으로 40, 50, 50인.. 2022. 11. 30.
빡공단 22기 도전기 - SQL 그룹함수2 (18일차) 그룹함수 : Part 2 1. GROUP BY() 연습문제 18일차에서 CASE WHEN()으로 풀어본 연습문제이다. CASE WHEN()을 중복으로 사용하며 풀 수도 있지만, 그룹함수로 더 쉽게 풀 수 있다. - 소득구간 00000 ~ 70000 (저소득) 70000 ~ 200000 (중위소득) 200000 ~ 250000 (고소득) 250000 ~ (초고소득) 각 사람이 급여에 따라 어느 그룹에 해당하는지 표시한다. 이렇게 소득그룹을 GROUP BY()로 묶고 각 그룹당 평균급여를 계산할 수 있다. 2. ORDER BY() 연습문제 내림차순으로 정렬하려면 DESC를 붙여준다. 오름차순으로 정렬하려면 아무것도 안쓰거나, ASC를 붙여준다. ORDER BY()는 SQL실행 순서 중 가장 마지막에 동작한다.. 2022. 11. 30.
빡공단 22기 도전기 - SQL 그룹함수1 (17일차) 그룹함수 Part 1 1. 작성 순서 SELECT - 4. 컬럼 선택 FROM - 1. 테이블 선택 WHERE - 2. 필터링 GROUP BY - 3. 집계함수 HAVING - 3. 집계함수 ORDER BY - 5. 정렬 2. GROUP BY() 엑셀에서 피벗테이블과 같은 역할을 한다. 이런식으로 피벗테이블과 같이 'department_id에 어떤 값이 있는지 확인할 수 있다. GROUP BY()를 통해 id를 집계하고, SELECT()를 이용하여 다시 표시하여준다. 또한 COUNT()를 통해 각 아이디에 속한 갯수를 파악할 수 있다. 컴퓨터에서는 SELECT()문에 컬럼이 명시되어있지 않아도, GROUP BY()에서 컬럼으로 묶는 기능을 한다. 직관적으로 확인할 수 있도록 SELECT()에도 컬럼을 작.. 2022. 11. 30.
빡공단 22기 도전기 - SQL 작성 방법 및 유의사항 (16일차) SQL 작성 시 접근 방법과 문제 해결 방법 1. SQL작성 시 유의사항 SQL은 비전공자들도 배울 수 있는 '쉬운 언어'이다. 쉬운만큼 기초가 중요하기 때문에 구조를 정확하게 이해해야 한다. 에러는 대부분 오타에 의해 발생하기 때문에 반복 연습이 중요하다. 쉬운 부분을 먼저 작성하고, 단계별로 쌓아나간다. 2. 연습문제 - 사원테이블의 소득구간별 대상자 수와 평균급여, 최대, 최소 연봉을 구하시오. - 소득구간 00000 ~ 70000 (저소득) 70000 ~ 200000 (중위소득) 200000 ~ 250000 (고소득) 250000 ~ (초고소득) - 연봉산출 = 급여(salary) + (급여 * 커미션(commission)) 커미션이 null인 사람은 급여가 20000 초과일 경우 0.38, 15.. 2022. 11. 30.
빡공단 22기 도전기 - SQL CASE WHEN (15일차) CASE WHEN : 원하는 조건 만들기 - CASE문은 함수가 아닌 표현식의 일종, 여러 함수나 연산자를 이용하여 조건을 만드는 방법 - DECODE 동등조건에서 사용, 오라클에서만 사용 가능 1. 단일 조건 1-1. DECODE() SELECT 컬럼명 , DECODE(컬럼명, 조건, 1(반환결과1), 0(반환결과2)) -- 맞으면 1, 틀리면 0 출력 FROM 테이블명 ; 1-2. CASE WHEN() SELECT 컬럼명 , CASE WHEN 컬럼명 = 조건 THEN 1(반환결과1) ELSE 0(반환결과2) END -- 맞으면 1, 틀리면 0 출력 FROM 테이블명 ; 2. 다중 조건 2-1. DECODE() SELECT 컬럼명 , DECODE(컬럼명, 조건1, 반환결과1, 조건2, 반환결과2 ..... 2022. 11. 30.
빡공단 22기 도전기 - SQL 날짜 및 그룹 함수 (14일차) 날짜 및 그룹 함수 1.날짜 연산 1-1. 날짜 사칙 연산 DATE(날짜) +-*/ NUMBER(숫자) ▶ 덧셈 날짜 입력 후, TO_DATE()함수를 이용하여 날짜형으로 바꿔야 한다. ▶ 뺄셈(일자가 출력됨) ▶ 시분초 확인 TO_CHAR를 이용하여 시분초 형태로 나타낼 수 있다. ▶ 시간 연산 그냥 숫자만 입력하면 일자가 더해지지만, '숫자/24'로 입력하면 시간이 더해진다. 5시간이 더해진 것을 볼 수 있다. 1-2. 날짜 함수의 종류 1. 월 수 계산 : 입력일자 - 계산일자의 개월수 MONTHS_BETWEEN(입력일자, 계산일자) 2. 월 덧셈 : 입력일자 이후 N개월 후의 날짜 ADD_MONTHS(입력일자, 더할 달의 수) 3. 돌아오는 요일 : 입력일자 이후의 돌아오는 해당 요일의 날짜 출력.. 2022. 11. 30.
반응형