인프런 커뮤니티 질문&답변

전종훈님의 프로필 이미지
전종훈

작성한 질문수

SQL 코딩테스트를 위한 첫 걸음

group by

[The Latest Login in 2020] datetime 계산 관련

해결된 질문

작성

·

159

1

select user_id, max(time_stamp) as last_stamp
from Logins
where year(time_stamp) = 2020
group by user_id

date typetime_stamp 컬럼을 2020년만 필터링 하기 위해서 year() 함수를 사용했습니다.

[ 궁금한 사항 ]

  • 이렇게 접근해도 올바른 풀이가 맞을까요?

답변 1

0

Gemma님의 프로필 이미지
Gemma
지식공유자

종훈님 안녕하세요:)

 

네~ 코딩테스트 문제로 나와도 통과가 될 올바른 풀이입니다. 다만, RDBMS에서 권장하는 방식은 아닌데요.

보통 검색 조건(=where조건)에 함수(예: year)를 씌우면 속도가 느려져서 권장하지 않습니다.

time_stamp의 인덱스를 활용하지 못하고, full scan으로 검색하기 때문입니다.

 

혹시 위 내용이 이해가 안갔더라도, 걱정하지 마시고 편하게 읽고 넘어가셔도 됩니다.

코딩 테스트에서는 종훈님께서 작성하신 쿼리를 써도 문제 없습니다!

 

종훈님의 쿼리도 해당 SQL 파일에 업데이트 하였습니다.

질문 감사합니다. :)



(참고) https://www.percona.com/blog/mysql-8-0-functional-indexes/ 

imageimage

전종훈님의 프로필 이미지
전종훈

작성한 질문수

질문하기