1. Max를 조건값으로 쓸 땐 where에 서브쿼리를 이용하자
- GROUP BY에서 묶은 그룹에서 최댓값을 가진 row를 구할 때 HAVING column = MAX(column)은 안됨
-대신 WHERE name = (SELECT name FROM table GROUP BY column1 HAVING column = MAX(column))은 작동
- 이때 서브쿼리 자체로만 쿼리를 돌릴 경우 오류가 뜨지만 서브쿼리로 적용했을땐 잘 search한다 . 이유는 모름
2. 대여기간의 경우 DATEDIFF 함수에 +1을 하자
- startdate 당일도 기간으로 치는 경우에는 DATEDIFF 함수에 1을 추가하도록 하자.
3. LIKE의 경우엔 WHERE 절에만 쓰는게 아닌 IF 절도 가능하다
- IF( Column LIKE '_foo%' , 'bar1', ''bar2 ) 가능
4. GROUP BY는 두개의 컬럼을 묶기가 가능하다.
- 두번 째 실수다.
5. 서브 쿼리 썻을때 본쿼리에도 적용이 되는 조건이 있는지 확인하자 (이중 조건)
-보통 조건을 걸 경우엔 서브 쿼리 뿐 아니라 본 쿼리에도 WHERE로 조건을 걸어줘야하는 경우가 많다.
6. WITH 절 사용
- EX:
with cars as (
select car_id
from car_rental_company_rental_history
where date_format(start_date, '%Y-%m') between '2022-08' and '2022-10'
group by car_id
having count(history_id) >= 5
)
-서브쿼리 형식으로 변수에 저장한다.
-사용 할때는 select car_id from cars 이런 식으로 테이블을 가져오듯이 사용.
7. Book as ‘a’ 했을 시 인식 불가
- a로 별명 지정하고 a.column_name 으로 호출할 경우 안불러와짐 그러나 Book as a로는 불러와진다
'공부 > SQL' 카테고리의 다른 글
SQL 추가 공부 (0) | 2023.04.07 |
---|---|
3-30 SQL 추가 공부 (0) | 2023.03.30 |
3-21. SQL 추가 지식 공부 (1) | 2023.03.21 |
4. DATE 관련 구문 & round (0) | 2023.03.20 |
3. JOIN과 REGEXP(정규 표현식) (0) | 2023.03.17 |