호기심 많은 분석가

[MySQL] 프로그래머스 Coding_Test / SUM, MAX, MIN 본문

Coding/Coding Test & Algorithm

[MySQL] 프로그래머스 Coding_Test / SUM, MAX, MIN

DA Hun 2021. 5. 6. 16:42

포스팅 개요

 SQL 문법과 익숙해지고자 프로그래머스의 SQL Coding Test 문제들을 풀어봄. 그중 SUM, MAX, MIN 파트의 문제들을 기록해두었습니다. 그 전 문제들은 2021.05.06 - [Coding Test & Algorithm] - [SQL] 프로그래머스 Coding_Test SELECT (2) 포스팅에서 확인할 수 있습니다. 


포스팅 본문

 아래의 문제들은 모두 동일한 TABLE을 기준으로 문제가 주어졌습니다.

TABLE 설명

SELECT TABLE


1. 최댓값 구하기

가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

최댓값 구하기

SELECT MAX(AI.DATETIME) FROM ANIMAL_INS AS AI;

SELECT AI.DATETIME FROM ANIMAL_INS AS AI
ORDER BY AI.DATETIME DESC LIMIT 1;

  두 가지의 방법을 사용했습니다.

  1. DATETIME의 최댓값 추출
  2. 앞 파트의 문제와 비슷하게 DATETIME을 내림차순으로 정렬한 뒤 제일 위의 DATA를 추출했음.

2. 최솟값 구하기

 동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

최솟값 구하기

SELECT MIN(DATETIME) FROM ANIMAL_INS

 최댓값을 MAX를 통해 구했으므로, 최솟값은 간단하게 MIN을 통해 구할 수 있다.


3. 동물 수 구하기

동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성해주세요.

동물 수 구하기

SELECT COUNT(ANIMAL_TYPE) FROM ANIMAL_INS

 행의 개수를 세기 위해서는 COUNT 함수를 사용합니다. COUNT 함수 사용 시 주의해야 할 점은 COUNT(COLUMN)은 NULL인 데이터를 제외하고 계산한다는 것입니다. NULL 데이터 포함 전체 행 개수를 셀 때는 COUNT(*)를 사용해주면 됩니다.


4. 중복 제거하기

 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.

중복 제거하기

SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS

 DISTINCT로 중복을 제외해주면서 COUNT로 NULL 값을 제외시켜줌. 이렇게 작성은 처음해봤는데 해결돼서 흥미로웠다.


 이상으로 SQL 중 SUM, MAX, MIN 파트를 배워보았습니다. 다음 GROUP BY에서 만나뵙겠습니다. :)