220930 금요일 TIL
데이터리안 유튜브
w3school
Hackerrank
리트코드
프로그래머스
SELECT에서 대량의 데이터셋의 평균, 최솟값 같은 요약 통계를 구하는 함수
COUNT() : 컬럼명 넣은 경우, NULL 값 제외시킴
예외) count( *아스타 ) 같은 경우 모든 행의 갯수를 구하는 것이기 때문에, NULL값에 영향을 받지 않는다
DISTINCT 옵션 : 유일값 == 중복값 제외시킴 (셀렉트문에서 컬럼명 앞에 사용/함수 있다면 함수 안에)
SUM() : 숫자 데이터 가진 컬럼에
AVG() : NULL 값 제외시킴 제외시켜서 평균값 계산하게 됨
주의) NULL값 제외시키고 싶지 않을 때, 평균을 SUM(Visits)/COUNT(*) 이런 식으로 구해줄 수 있음
MIN() / MAX()
IF(last_order_date >= '2020-12-01', 1, 0)
SELECT문에서 여러 개 출력할 때
SELECT SupplierID
, CategoryID
, AVG(Price)
=> 요런 식으로 띄어쓰기 하는 거 추천함
AS : 별칭
SELECT 문에서 사칙연산 가능
함수 함수로 감쌀 수 있음
곱하기 *
셀렉트절의 AS는 GROUP BY, ORDER BY에서 쓸수 있다 (되는 게 몇몇 있음)
MIN, MAX 할때랑 ORDER BY, LIMIT 1 할때랑 뭐가 다른거지???
범용성이 높은 프레임워크
위에서부터 필터링이 된다고 생각하면 됨!
A조건
B조건
=> (A조건이 아닌 것 중에,) B조건
CASE WHEN ~ THEN ~ END
-> ELSE NULL 굳이 안해도 바로 NULL값으로 할당됨!
ELSE는 옵션, "CASE WHEN~ THEN~ END" 이게 최소 단위
행과 열로 나눠진 형태로 보면 (교차되는 지점이 생겨) 인식하기가 더 빠르고 효율적이기 때문에 피벗!
<아이디어> 데이터를 한눈에 보고 싶다
기존 테이블: [행] 인덱스 0 1 2 3 ... [열] 컬럼명1 컬럼명2 컬럼명3
피벗 테이블: [행] 컬럼명1의 요소들 [열] 컬럼명2의 요소들
rdb 데이터베이스 = 여러 데이터를 연결하는 과정이 필수
메모리 낭비하고 있는 한 테이블, 두 개로 나누어서 저장하자, 그 후 연결할 수 있는 번호를 부여하면 중복되는 데이터 없이 연결해서 볼 수 있음
실제로, FROM절에 이제 2가지 이상 쓸 수 있다
FROM Users, Orders
=> 그런데 구식 버전
그럼 테이블 어떻게 붙일까? INNER JOIN
양쪽 테이블에 데이터가 모두 다 있을 때 출력 : 교집합
SELECT *
FROM Table A
INNER JOIN Table B ON A.key = B.key
(WHERE)
A, B 컬럼들을 기준으로 데이터를 이어붙이겠다
단, 두 테이블 모두 정보가 있어야 한다
같은 열이 있다면 '테이블.컬럼' 으로 표기해줘야 한다
DATE_ADD(기준날짜, INTERVAL~)
DATE_SUB(기준날짜, INTERVAL~)
SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND)
SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR)
SELECT DATE_ADD(NOW(), INTERVAL -1 DAY) => DATE_SUB 빼기랑 같음
ON yesterday.recordDate + INTERVAL 1 DAY = today.recordDate
중복 데이터가 있을 경우, 중복 없앤 결과 반환
LEFT JOIN + UNION + RIGHT JOIN
이런 식으로 구현할 수 있다
주석 감싸는 방법
/* (주석 감싸기) */
FLOOR : 내림
AS : 알리아스 FROM절, WHERE절에서도 쓸 수 있음
DISTINCT : 중복값 제거해주는 WHERE절 옵션으로, 이걸 쓰지 않으면 기본값이 ALL이라고 생각할 수 있음
HAVING : GROUP BY의 조건절 (필터링) - 그룹바이 해준 결과물을 가지고 필터링
ORDER BY X : 유니온 이후에, 마지막 줄에서 정렬해주면 됨 (유니온 위의 쿼리에서는 불가능)
따옴표 쓰고 안쓰고 헷갈려.. 요소는 따옴표!! 띄어쓰기 안에 있는 컬럼명도 따옴표!!