프로그래머스 SQL 답 SUM, MAX, MIN 문제 풀이 #03
프로그래머스 SQL 답 SUM, MAX, MIN 문제 풀이 #03
안녕하세요. sTricky 입니다!!
프로그래머스 SQL sum, max, min 문제 풀이를 진행 해보도록 하겠습니다.
바로 진행 해보도록 하겠습니다.
어렵지 않습니다!
최댓값 구하기
첫번째 문제는 최댓값 구하는 문제입니다.
문제는 다음과 같이 주어졌습니다.
ANIMAL_INS 테이블의 구조와 데이터가 예시로 나와 있구요.
문제는 가장 최근에 들어온 동물은 언제 들어왔느냐 입니다.
여러분들이 날짜의 크고 작고를 구할때 햇갈리시면 안되는게, 날짜가 과거이면 작고, 그다음이 현재, 그리고 미래가 크다는걸 잊으시면 안됩니다. 그러닌깐, 가장 최근, 지금을 기준으로 가장 최근이니 있는 날짜 가운데 가장 큰것을 구하면 되겠죠. 바로 MAX() 함수를 사용하시면 쉽게 구하 실 수 있습니다.
여기서 대상은 전체 데이터를 대상으로 하니, 다음과 같이 답안을 작성 하시면 되겠습니다.
SELECT MAX(DATETIME)
FROM ANIMAL_INS;
간단하죠?
최솟값 구하기
다음은 최솟값 구하기 입니다.
문제를 먼저 확인 해보겠습니다.
이번 문제 역시, 이전 문제의 반대이네요. 동물 보호소에 가장 먼저 들어온 동물이 언제 들어왔는지를 출력하는 문제 입니다. 가장 먼저 들어온 동물의 입소 날짜가 가장 과거의 날짜 이겠죠? 그래서 최솟값을 구하는 MIN() 함수를 사용 하여 구하면 쉽게 구할 수 있습니다.
정답은 다음과 같겠죠.
SELECT MIN(DATETIME)
FROM ANIMAL_INS;
아직까지는 너무 쉽네요.
화이팅 입니다!
동물 수 구하기
다음 문제는 동물 수 구하기 입니다.
문제를 확인 해보겠습니다.
문제는 동물 보호소에 동물이 몇 마리 있는지 조회 하는 SQL문을 작성 하는것 입니다.
ANIMAL_INS 테이블의 ROW수를 세면 되겠죠? ROW수를 세는 함수는 COUNT() 함수 입니다.
어떤 테이블에 몇건의 ROW가 있는지 확인 할 때 사용 합니다.
SELECT COUNT(*)
FROM ANIMAL_INS;
위와 같이 SQL을 작성 하시면 되겠습니다.
중복 제거하기
이번 문제는 중복을 제거 하는 문제 입니다.
중복을 제거 하여 몇건의 값이 있는지 세어서 출력 하면 되겠죠.
문제를 확인 해보겠습니다.
자, 중복을 제거 하여 그 수를 세는 방법은 다양합니다. 그중에서 간결하게 SQL로 표현 하는 방법을 안내 해드리도록 할께요. 이전 문제에서 ROW수를 세는것은 COUNT() 함수 라고 했죠. 이 COUNT() 함수와 DISTINCT 라는 중복을 제거 하는 명령을 함께 사용 해보겠습니다.
우선, 동물의 이름은 NAME 이라는 컬럼에 있죠. 이 컬럼에서 중복을 제거 하려면 다음과 같이 표현 할 수 있습니다.
SELECT DISTINCT NAME
FROM ANIMAL_INS;
위와 같이 SQL을 실행하면 중복이 제거된 NAME 들이 출력 될 겁니다.
여기에서 COUNT() 함수를 감싸주면 그 수를 세게 됩니다.
다음과 같이 말이죠.
SELECT COUNT(DISTINCT NAME)
FROM ANIMAL_INS;
이때, COUNT()함수는 NULL을 세지 않습니다. 왜냐하면 이전 문제 처럼 COUNT(*)로 표현 한다면 모든 ROW를 세게 되지만, COUNT() 함수안에 특정 컬럼명이 들어가면 해당 컬럼의 NULL 값은 세지 않거든요. 참고로 알아 두시기 바랍니다.
위 SQL이 정답 입니다.
자, 이렇게 오늘 프로그래머스 SQL sum, max, min 문제 풀이를 진행 해보았습니다.
sql을 좀 더 공부 체계적으로 공부 하시고 싶으신 분들은 다음 링크로 가셔서 학습을 이어 가시면 되겠습니다.
감사합니다.
2020.08.07 - [Database/sql 강의] - MySQL SQL 독학 강의 전체 A to Z
안녕히 계세요!!
##다음편 보러가기##
2021.09.30 - [Database/프로그래머스SQL] - 프로그래머스 SQL 답 GROUP BY 문제 풀이 #04
by.sTricky