본문 바로가기

SQL - Mysql & Oracle

[SQL] 프로그래머스 - 최댓값 구하기 해설(feat. 집계함수 모음)

반응형

 

 

1. 문제 출처 

 

프로그래머스 최대값 구하기 문제 원본으로 이동

 

 

오늘의 핵심은 SQL에는 어떤 집계함수가 있고, 어떻게 활용할 수 있는지 파악해보는 것이다.

 

SQL의 기본 실력을 쌓는데 핵심이니, 단순 풀이 뿐만 아니라 집계함수의 종류에 대해서도 알아가면 좋다.

 


 

2. 문제 간단 설명 - 가장 최근에 들어온 동물의 시간은?

 

프로그래머스 - 최대값 구하기 문제

 

문제의 요구 사항은 정말 간단하다. 가장 최근에 동물은 언제들어왔는지 정확한 시간을 구하는 것이다. 

 

난이도가 쉬워서 그렇지, 어렵게 냈으려면 시간의 형식도 정해줬을 것이다. 이 부분은 나중에 기회가 있을 때 다루도록 하자.

 

 

 

반응형

3. 코드 해설 - 다양한 집계함수를 써보자

 

1
2
3
4
5
6
7
8
9
10
-- 좋은 코드의 예시
SELECT max(ai.DATETIME) 시간
FROM ANIMAL_INS ai
 
 
-- 코딩 테스트에 떨어지는 예시 (절대 따라하지 마세요)
SELECT ai.DATETIME 시간
FROM ANIMAL_INS ai
order by ai.DATETIME desc
LIMIT 1;
cs

 

 

Part1. SQL에서 활용되는 집계함수 설명

 

사실 이 포스팅의 독자분들은 SQL의 초보분들이라고 생각해서 친절하게 설명하는데 초점을 둔다.

 

기본적으로 SQL에서 알아야할 집계함수는 총 5가지이고, 항상 암기해서 언제든지 쓸 준비를 해야 할 것이다. 

(물론 이것보다 훨씬 많은 함수들이 있고, 여유가 된다면 더 공부하는 것을 권장한다.)

 

  • 최대값: max(column명)
  • 최소값: min(column명)
  • 평균: AVG(column명)
  • 카운트: Count(column명) / 고유 카운트 Count( distinct column명 )
  • 합계: Sum(column명)

 

이외에도 정말 다양한 집계함수가 있지만, 저 정도는 반드시 암기를 하고 코딩 테스트를 준비해야 한다.

 

 

 

 

Part2. 코드에도 정답과 문채가 있다.

 

아래 영역 중 "코딩 테스트에 떨어지는 예시"처럼 코드를 쓰면 정답이야 맞을 수 있겠지만, 나중에 채점을 했을 때 떨어질 가능성이 굉장히 높다. 이유는 크게 3가지로 볼 수 있다.

 

 첫 번째. 기본적인 언어의 함수를 인지하지 못 하고 있다는 인식을 준다.

 두 번째. 코드가 난해해진다. 두줄이면 끝날 것을 4개나 쓴 것은 읽기 매우 불편해진다.

 세 번째. 코드의 리소스가 비효율적이다. SQL도 기초 언어가 아닌 파생 언어이기 때문에 DB의 효율을 생각해야 한다.

 

아무리 쉬운 문제라도 어떻게 해야 "가장 깔끔하고, 효율적인 Query를 작성할까"에 대한 고민을 항상 하고 반복 연습하면 일취월장할 것이라 생각한다.

 

 

 

 

 

 

반응형