클래스 리뷰62 빡공단 22기 도전기 - SQL SELECT 서브쿼리 (26일차) SELECT - 서브쿼리 1. 서브쿼리 SELECT(), FROM() 절을 하나의 쿼리로 생각하면, 쿼리 안에 쿼리를 작성하는 방법으로 활용 가능하다. 2. SELECT() 절 서브쿼리 전체급여를 하나의 컬럼으로 만들어서 표시해주고 싶다면? SELECT() 절 안에 SELECT() 절을 작성하면 가능하다. 이렇게 하면 원본테이블을 수정하지 않고 원하는 결과를 출력할 수 있다. SELECT() 절의 서브쿼리는 'scala 서브쿼리'라고 부르기도 한다. 출력되는 행 수만큼 반복되어 실행된다. 데이터를 반복해서 출력하기 때문에, 성능의 효율성을 위해 데이터를 메모리에 올려놓고 반복해서 출력하게되고 이를 '메모리캐싱'이라고 한다. 3. SELECT() 절 서브쿼리 확장 테이블을 JOIN() 한 것처럼 사용가능하.. 2022. 12. 7. 빡공단 22기 도전기 - SQL 실전 데이터 분석 (25일차) 실전 데이터 분석 1. 테이블생성 21일차 실습때 작성했던 코드를 가져온다. CREATE TABEL()을 이용하여 테이블을 생성할 수 있다. 위와 같이 작성후 실행하면, 테이블이 생성된다. 동일한 방법으로 '비상벨설치현황' 테이블도 만들어준다. 2. 지역별 설치현황 2-1. 테이블 합치기 지역을 기준으로 테이블을 합친다. 테이블명을 A, B로 하여 쉽게 작성할 수 있다. 2-2. 지역별 설치비율 2-3. 구간별 평균 카메라 설치 수 설치 구분에 대한 조건을 작성한다. 설치구분 조건을 기준으로 확인하고자 하는 값들을 계산 및 색인한다. 2-4. 전체설치건수 중 카메라설치 비율 25일차 인증! 2022. 12. 7. 빡공단 22기 도전기 - SQL 기타 JOIN (24일차) 기타 JOIN() 1. NATURAL JOIN() SELECT * FROM 테이블명1 NATURAL JOIN 테이블명2 ; -- 동일한 표현 SELECT * FROM 테이블명1 INNER JOIN 테이블명2 ON 테이블명1.키 컬럼1 = 테이블명2.키 컬럼2 AND 테이블명1.키 컬럼1 = 테이블명2.키 컬럼2 ; JOIN 조건을 주지 않고 EQUI-JOIN하는 방법 각 테이블에 공통으로 존재하는 컬럼이 '복합 키'로 사용된다. 따라서, 기존에 '키'로 사용되는 컬럼이 '_1'로 하나가 더 추가되었던 것과 달리, '키'당 컬럼 하나가 출력된다. 2. CROSS JOIN() SELECT * FROM 테이블명1 CROSS JOIN 테이블명2 ; -- 동일한 표현 SELECT COUNT(*) FROM 테이블명.. 2022. 12. 7. 빡공단 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. 이전 1 2 3 4 5 6 7 다음 반응형