WHERE
SELECT
FROM
WHERE PRICE < 100
AND name = "문자"
AND price BETWEEN 50 AND 150
AND (Neighbourhood = 'Midtown' OR 'Soho')
BETWEEN A AND B
는 A 이상 B 이하
OR
사용가능SELECT
FROM
WHERE PRICE < 100
AND name = "문자"
AND price BETWEEN 50 AND 150
AND (Neighbourhood = 'Midtown' OR Neighbourhood = 'Soho')
IN
이중에 1개만 만족해도 OK! / NOT IN
리스트에 있는게 하나라도 포함되면 안돼!SELECT
FROM
WHERE PRICE < 100
AND name = "문자"
AND price BETWEEN 50 AND 150
AND Neighbourhood IN ('Midtown','Soho')
WHERE
#2NULL
(0과는 다르다)WHERE 어디어디 IS NULL
WHERE 어디어디 IS NOT NULL
LIKE
↔ NOT LIKE
WHERE 어디어디 LIKE '%찾으려는글자%'
%는 그 자리에 다른 값이 있어도 된다는 뜻.
UPPER(컬럼)
, LOWER(컬럼)
모든 영문자를 대문자, 소문자로AS
로 설정할 수 있음 (생략가능)SELECT name, UPPER(name) AS upper_name, LOWER(name) AS lower-name
WHERE LOWER(name) LIKE '%abcd%'
ABCD일 경우(또는 하나라도 대문자일 경우) abcd와 다르다고 인식하기 때문에 LOWER
를 이용하여 전부 소문자로 바꾼 다음 LIKE
로 작성하면 전부 소문자로 바뀌어 전부 찾을 수 있음.
WHERE 숫자컬럼 * 2 < 300
Aggregate
SELECT COUNT(ID) AS 이름
FROM ----
SELECT COUNT(*) AS 전부
FROM ----
SELECT COUNT(*) AS 전부, COUNT(ID) AS 이름
FROM ----
SELECT COUNT(ID) AS 이름 , COUNT(DISTINCT id) AS 중복제거
FROM ----
SELECT MAX(price), MIN(prince), AVG(price)
FROM ----
SELECT SUM(review)
FROM ----
GROUP BY
SELECT 컬럼
FROM 테이블
WHERE 필터링 조건
GROUP BY 묶어서 볼 컬럼
HAVING 필터링 조건
ORDER BY
LIMIT 상위N개d
SELECT neighbourhood_group,neighbourhood,
COUNT(id) AS id_count,
AVG(price) AS average_price
FROM `taling-excercise.data_pre.airbnb`
GROUP BY neighbourhood_group, neighbourhood
SELECT neighbourhood_group,neighbourhood,
COUNT(id) AS id_count,
AVG(price) AS average_price
FROM `taling-excercise.data_pre.airbnb`
GROUP BY neighbourhood_group, neighbourhood
ORDER BY 정렬기준_1, 정렬기준_2 ---오름차순
ORDER BY 정렬기준 DESC ---내림차순
ORDER BY 정렬기준_1, 정렬기준_2 DESC
로 작성하면됨GROUP BY 1,2
WHERE
vs HAVING
WHERE : 개별 행에 적용, GROUP BY 되기 전에 작동, GROUP BY 앞에
HAVING : 그룹화 된 결과에 적용 GROUP BY 후에 작동, GTOUP BY 뒤에
이부분은 쌤의 설명을 들어도 뭔가 이해가 잘 안간다. 막상 실습을 해보니 aggregation 전의 원본 column 값은 where절로, aggregation 하며 생성한 column 은 having으로 해야하는 것 같은데... Q&A에 남겨봐야지