Programmers - SQL - SUM, MAX, MIN 문제들 풀어보기
Programmers - SQL - SELECT 문제들 풀어보기
프로그래머스에서 SQL문제들 중 SELECT 문제들을 풀어 보았습니다. 테이블 하나에서 단순 조회하는 정도라 난이도는 쉬운 편입니다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션
junho85.pe.kr
SELECT 문제 풀기 다음으로 SUM, MAX, MIN 문제들을 풀어봅니다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
현재 총 4문제가 있습니다.
최댓값 구하기
https://programmers.co.kr/learn/courses/30/lessons/59415
코딩테스트 연습 - 최댓값 구하기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
가장 최근에 들어온 동물을 찾는 문제입니다.
풀이 방법은 여러 가지가 있겠지만 두 가지 방법으로 풀었습니다.
datetime역순으로 정렬하고 첫 번째 데이터 가져오기
SELECT datetime
FROM animal_ins
order by datetime desc
limit 1
max함수 이용하기
SELECT max(datetime)
FROM animal_ins
최솟값 구하기
https://programmers.co.kr/learn/courses/30/lessons/59038
코딩테스트 연습 - 최솟값 구하기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
가장 먼저 들어온 동물이 언제 들어왔는지를 구하는 문제입니다.
마찬가지로 두 가지 방법으로 풀었습니다.
datetime순으로 정렬하고 첫 번째 데이터 가져오기
SELECT datetime
FROM ANIMAL_INS
order by datetime
limit 1
min함수 이용하기
SELECT min(datetime)
FROM animal_ins
동물 수 구하기
https://programmers.co.kr/learn/courses/30/lessons/59406
코딩테스트 연습 - 동물 수 구하기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
동물 보호소에 몇 마리의 동물이 들어왔는지 구하는 문제입니다.
count함수를 이용하면 됩니다.
SELECT count(*)
FROM animal_ins
중복 제거하기
https://programmers.co.kr/learn/courses/30/lessons/59408
코딩테스트 연습 - 중복 제거하기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
동물 보호소에 들어온 동물의 이름이 몇 개인지 조회합니다. 이름이 NULL인 경우는 제외합니다. 중복된 이름은 하나로 처리합니다.
distinct문으로 중복을 제거하고 count함수를 이용하면 쉽게 구할 수 있습니다.
SELECT count(distinct name)
FROM animal_ins
count 함수는 NULL을 집계하지 않기 때문에 NULL을 제거하는 조건을 따로 넣지는 않았습니다.
만약 명시적으로 넣고 싶다면 다음과 같이 NULL을 제거합니다.
SELECT count(distinct name)
FROM animal_ins
WHERE name is not NULL
SUM, MAX, MIN이 주제였는데 SUM을 사용해서 푼 문제가 없어서 마지막 문제를 SUM을 이용해서 풀어보았습니다.
select sum(1)
from (
SELECT 1
FROM animal_ins
where name is not null
group by name) animal;
name is not null로 null을 제거하고 group by name으로 같은 이름별로 그룹핑합니다. 그 결과를 다시 select 해서 열의 개수만큼 1을 만들어서 sum함수를 이용해서 합해주었습니다.
그냥 이런 방법이 가능한 거지 이 문제에서는 그다지 실용적이지는 않습니다.