[ 2024.07.05 ] TIL

yy·2024년 7월 5일

개발일지

목록 보기
78/122

요즘 완전 SQL 알고리즘 문제에 빠졌다...너무 재밌는데..이거

1. QUARTER ()

분기별 표시를 해줄 때 조건부로 해줘야하는줄 알았는데 YEAR, MONTH와 같이 따로 함수가 존재했음.

QUARTER() 함수




2. 날짜 차이 구하기

그냥 단순하게 날짜끼리 빼면 되는거 아닌가? 싶었지만, 쿼리 실행결과로 이걸로는 안되겠구나 싶었다.

SELECT START_DATE, END_DATE,
        (END_DATE - START_DATE) AS DATE FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
 WHERE YEAR(START_DATE) = 2022 AND MONTH(START_DATE) = 9
 ORDER BY HISTORY_ID DESC;

22.09.25에서 23.01.03인데 9178일?! 도랏나!!

그러다가 날짜 차이를 구할 수 있는 함수가 있다는걸 알았다.

  • DATEDIFF() : 단순 일(DAY) 차이를 구할때 사용.
DATEDIFF(날짜1, 날짜2);
  • TIMESTAMPDIFF() : 연, 분기, 월, 주, 일, 시, 분, 초를 지정하여 가져올 때 사용.
TIMESTAMPDIFF(단위, 날짜1, 날짜2);

#단위
#SECOND : 초
#MINUTE : 분
#HOUR : 시
#DAY : 일
#WEEK : 주
#MONTH : 월
#QUARTER : 분기
#YEAR : 연

출처: https://extbrain.tistory.com/78 [확장형 뇌 저장소:티스토리]




  1. Alias 부여한 컬럼 조건부에서 사용하기

    SELECT절에서 Alias로 별칭을 부여한 컬럼을 조건절에서 사용하고 싶었는데 오류가 발생해서 안되는건가 싶어 찾아봄. 결론적으로는 안됨.

    FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY


    이유는 위와 같이 실행되는 순서때문이라고 함. alias의 값을 사용하기 위해선 GROUP BY 이후의 조건구문인 HAVING을 이용한 쿼리를 사용해야 한다고함.

출처: https://moon-dev-blog.tistory.com/16

profile
시간이 걸릴 뿐 내가 못할 건 없다.

0개의 댓글