no image
SQL : Join - LEFT/RIGHT/OUTER JOIN
INNER JOIN 말고 OUTER JOINs에는 LEFT JOIN, RIGHT JOIN, OUTER JOIN이 있다. INNER JOIN은 두 테이블에 모두 있지 않은 정보는 결과로 출력되지 않았다. OUTER JOINs에서는 unmatched된 행들도 결과로 출력될 수 있다. 2. LEFT JOIN INNER JOIN에서처럼 두 개의 TABLE 이 있다고 생각해보자. (1) : 교양 수업을 수강등록한 학생 목록 : 테이블 명 = Students userID 학과 학년 1 경영학과 2 2 응용통계학과 4 3 건축학과 4 4 식품영양학과 3 (2) : 7월 19일 과제제출 및 퀴즈 결과 : 테이블 명 = Class ID 과제제출 퀴즈결과 1 제출 90 3 미제출 80 4 제출 75 이와 같이 INNER ..
2023.07.20
no image
SQL : JOIN - INNER JOIN
JOIN 이 왜 필요할까? 이제까지는 테이블 하나로만 쿼리를 작성했다. 하지만 현실에는 정보들이 여러 개의 테이블들로 나뉘어 있고, 이 여러 개의 테이블들 사이의 관계를 고려하여 연결할 수 있어야 한다. 1. INNER JOIN 다음과 같은 두 개의 TABLE 이 있다고 생각해보자. (1) : 교양 수업을 수강등록한 학생 목록 : 테이블 명 = Students userID 학과 학년 1 경영학과 2 2 응용통계학과 4 3 건축학과 4 4 식품영양학과 3 (2) : 7월 19일 과제제출 및 퀴즈 결과 : 테이블 명 = Class ID 과제제출 퀴즈결과 1 제출 90 3 미제출 80 4 제출 75 여기서 두 table로 SELECT * FROM Students, Class 의 쿼리를 입력하면 연결지을 수 있..
2023.07.19
no image
SQL : CASE로 pivot하기
CASE 절을 이용해서 테이블을 피벗하는 방법에 대하여! - 예제 : 리트코드 1179 - 예제 : 리트코드 1193 LeetCode 1179. Reformat Department Table 문제 이용 Table : Department Column Name Type id int revenue int month varchar 달별 각 부서 (department)의 revenue 값이 기록되어 있는 테이블이다. month의 values are in ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] Write a SQL query to reformat the table such that there is a d..
2023.07.19
no image
SQL : Case
CASE CASE 절은 IF절과 같은 역할을 한다. 예시부터 들어보면, CASE 절의 구성은 다음과 같다. CASE WHEN (조건) THEN (조건=T일 때 결과) ELSE (조건=F일 때 결과) END - 항상 END 로 끝나야 함 - ELSE 는 optional임 (WHEN/THEN에서 조건이 다 커버 안되면 넣어야겠지) WHEN 뒤 조건절에 여러 조건을 AND / OR 을 같이 이용해서 구성해도 된다. 예를 들어, SELECT player_name, CASE WHEN year = 'FR' AND position = 'WR' THEN 'fr_wr' ELSE NULL END AS (어쩌구저쩌구) FROM (테이블명) # Using CASE with aggregate functions 특정 조건을 만족..
2023.07.14
no image
SQL : Having
Having group by를 이용해서 aggregate 을 해보았다. 그런데 만약 월별로 aggregate을 했을 때, 모든 월에 대하여 aggregate 결과를 보고 싶은게 아니라 해당 결과에 대해서 특정 조건을 만족하는 월들을 찾고 싶다고 해보자. SELECT ~ FROM 과 함께 썼던 WHERE 절은 여기서 이용할 수 없다. 왜냐하면 GROUP BY 절 전에 오는 WHERE 절로 이미 집계(Aggregated)가 된 값들을 기준으로 filter할 수 없기 때문이다. 그래서 이 때 이용하는게 HAVING 절이다. 예 ) 년도 + 월 조합 별 'high' 컬럼의 최댓값을 알고 싶은데, 그 최댓값이 400이 넘어야 한다는 조건을 붙여보자. # 쿼리문 순서 정리 (Query Clause Order) 1...
2023.07.14
no image
SQL : Distinct
DISTINCT 특정 column에 대해 중복을 제거하는 sql문이다. Apple stock prices dataset의 "month" column에서 unique values를 선택하기 위한 쿼리는 아래와 같다. (result) month 1 2 ... 만약 column 두 개를 select 한다면 두 열의 쌍으로 unique한 pair들을 모두 출력할 것이다. (result) year month 2014 2 2014 5 2015 1 ... ... + 위에 result는 모두 month 또는 year에 대해 오름차순이 되도록 setting 해놨는데, 만약 결과가 원하는 순서로 정렬되어 있지 않다면 마지막 줄에 order by (column 명) (desc) 를 덧붙여 주면 된다. # Using DIST..
2023.07.10
no image
SQL : Group by
Group by # Grouping by a single column data를 group으로 나눈 다음에 group별로 aggregate 할 수 있도록 해준다. 'Apple Stock prices dataset'에서 년도 별로 data(row)가 몇 개(행)씩 있는지 세기? sum, avg, min, max와 같은 aggregate 함수는 어떤 column의 value들을 계산할 것인지 지정이 필요하기 때문에 sum( ), avg( ), min( ), max( ) 등 ( ) 안에 계산하려는 column명을 명시해야 하지만 count( ) 함수의 경우 어떤 열을 선택하던, 그 결과값은 동일하기 때문에 보통 count(1) 또는 count(*)로 입력한다. # 열 간 연산 후, grouping by a c..
2023.07.10
no image
SQL : Aggregate functions : Count, Sum, Min/Max, Avg
1. Count # Counting all rows 'Apple Stock prices dataset'에서 dataset의 행의 수를 카운트한다고 하자. # Counting individual columns (distinctive values) 같은 dataset에서 특정한 column의 non-null인 행의 수를 카운트하고 싶다고 하자. 이번에는 특정 column에서 서로 다른 value가 몇 개가 있는지 카운트하고 싶다고 하자. (+중복제거) SELECT COUNT (DISTINCT 컬럼명) FROM 테이블명 2. Sum 특정 행의 모든 값들을 합을 구해준다. count 와 다르게 (당연히..?) 해당 column의 모든 값이 numerical value이어야 가능하다. NULL값들은 0으로 처리한..
2023.07.06
no image
SQL : not, order by
1. NOT SQL에서 어떤 조건문 앞에 NOT 을 붙이면, 그 조건에 해당하지 않는 행을 불러올 수 있다. # NOT은 LIKE 와도 같이 잘 쓰인다. 예를 들어, WHERE artist NOT LIKE 'a%' # non-null인 행들을 골라낼 때 IS NULL 과 함께 쓰이곤 하는데, 이 때 syntax에 주의해야 함 !! : # 추가 예시 : Write a query that returns all rows for songs that were on the charts in 2013 and do not contain the letter "a". SELECT * FROM tutorial.billboard_top_100_year_end WHERE song_name NOT ILIKE '%a%' AND y..
2023.07.01