반응형
- HAVING : 집계 함수와 함께 사용해야 한다.
- SET 함수 : 값을 어떤 값으로 초기화할 때 사용한다.
- 시간이 등장할 때 사용할 수 있는 함수이다.
- 이때, HOUR이 0 ~ 23으로 되는 것이 조건이라면 이렇게 해결할 수 있다.
SET @HOUR = -1;
SELECT (@HOUR := @HOUR +1) AS HOUR
- 여기서 := 는 대입한다는 의미이다.
LIKE vs '='
날짜가 나올 때 많이 등장한다.
- LIKE : 와일드카드(%)를 사용하고 싶을 때 사용하자.
WHERE DATE(B.SALES_DATE) LIKE '2022-01%'
- ' = ' : 정확한 날짜를 입력할 때 사용하자.
WHERE SALES_DATE >= '2022-03-01' AND SALES_DATE < '2022-04-01'
JOIN vs UNION
JOIN
- 두 개 이상의 테이블 간의 관계를 설정, 특정 열의 값을 조합하거나 연결하는 데 사용한다.
- 연결된 값이 일치하는 행을 찾아낸다.
- 관련 테이블의 행을 결합한다.
- INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN 등이 있다.
UNION
- 하나 이상의 SQL SELECT문과 결과 집합을 결합하여 집합을 만든다.
- 여러 테이블, 쿼리에서 데이터를 추출하고 하나의 결과로 합칠 때 사용한다.
- 중복 행 제거 : UNION DISTINCT
- 중복 행 유지 : UNION ALL
- DB간이 아니라, 쿼리의 결과 집합을 결합할 때 사용한다.
=> JOIN은 테이블 레벨에서 작동하고 관계를 활용하며, UNION은 쿼리 결과 레벨에서 작동하고 데이터를 합치거나 결합한다.
=> 각각의 테이블의 결과를 합칠 거면 JOIN (X) , UNION (O)을 사용한다.
COUNT vs SUM
COUNT함수는 특정 열에서 NULL 이 아닌 값의 수를 계산하는 데 사용한다.
NULL 이면 ~~라고 표시하기
ifnull(칼럼, '출력할 문구') 사용하기
ifnull(TLNO,'NONE') as TLNO
= TLNO이면 NONE으로 표시할거다!
SELECT문에 넣어주기!
NULL인 것을 찾기만 해라
WHERE AGE IS NULL
조건문에만 넣어주기!
가격이 제일 높은~
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)
#아니면
ORDER BY PRICE DESC
LIMIT 1
중복을 제거하는~
SELECT count(DISTINCT(NAME)) AS count
구분해줘야 할 케이스가 여러개일 때
CASE WHEN ~~ THEN 'A'
ELSE 'B'
END
AS RENT TYPE
며칠 차이나는지 구하는 방법
DATEDIFF(마지막 날, 첫 날) #첫날 미포함
DATEDIFF(마지막 날, 첫 날) +1 #첫날 포함
!! 주의할 점 : 첫 번째 날짜를 포함하지 않음. 시작일을 포함하지 않으므로 +1 을 더해줘야 한다!
글자의 왼쪽 2글자만
LEFT(PRODUCT, 2) AS CATEGORY
해당되는 것을 모두 골라라
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
서브쿼리 사용할 때?
1. 하위 집합 필터링 : 주요 쿼리의 결과 집합과 서브쿼리의 결과 집합을 비교한다. 주요 쿼리 결과에서 서브 쿼리 결과와 일치하는 값만을 선택한다.
2. 다중 값 비교 : 주요 쿼리 결과에서 여러 값을 동시에 비교할 수 있다. 특정 목록이나 값 집합과 일치하는 행을 검색할 때 사용할 수 있다.
반응형
'코딩테스트 대비 > SQL' 카테고리의 다른 글
| [SQL] HAVING VS WHERE (0) | 2023.06.20 |
|---|---|
| [SQL] 주의사항 (0) | 2023.06.20 |
| [SQL] 실제 실행 순서 (0) | 2023.06.20 |
| [SQL] OR을 표현하는 여러가지 방법 (0) | 2023.06.20 |