Programmers 풀기 - Mysql(연산)

joker·2020년 4월 27일
0

Algorithm

목록 보기
1/2
post-thumbnail

Mysql 문제풀이

출처 programmers.co.kr

최댓값 구하기

정답

SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1

SELECT DATETIME FROM ANIMAL_INS
ANIMAL_INS Table에서 DATATIME Column 을 선택한다

ORDER BY DATETIME DESC LIMIT 1
테이블 정렬은 내림차순(DESC)으로 하며 1개만 노출한다

ORDER BY

  • 데이타를 지정된 컬럼으로 정렬하기 위한 SQL문이다.
  • 'ORDER BY 컬럼명'을 사용하면, 해당 컬럼을 오름차순으로 정렬하여 결과를 출력한다.

최솟값 구하기

정답

SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME ASC LIMIT 1

위에랑 똑같은 문제다. ASC는 오름차순이며 default가 오름차순이기 때문에 생략도 가능하다.

동물 수 구하기

정답

SELECT COUNT(*) FROM ANIMAL_INS 

COUNT(집계함수)

  • Table 전체의 행 숫자가 알고 싶다면 COUNT(*) 사용
  • 특정 컬럼의 숫자를 확인하려면 COUNT(컬럼명)을 사용한다

중복 제거하기

정답

SELECT COUNT(DISTINCT NAME) AS 'count' FROM ANIMAL_INS 
WHERE NAME IS NOT null

문제에 기재되어있는대로 1.null제외 2.중복제외 가 필요한 상황이다.

distinct name을 통해 중복을 제거한 이후 as를 이용해 count를 선택하였다.
where 조건절을 이용해 name의 null을 제외하였다.

as 'count'는 제거하여도 정답은 똑같다.

AS?

  • 쿼리안에 테이블 혹은 서브쿼리 에 AS로 이름을 정해줄 수 있다.
    정해준 이름으로 쿼리 안에서 사용 가능하다.

고양이와 개는 몇 마리 있을까

정답

SELECT animal_type, COUNT(ANIMAL_TYPE) AS COUNT 
FROM ANIMAL_INS GROUP BY animal_type ORDER BY animal_type asc

select로 animal_type, count 2가지의 컬럼을 뽑는다.

animal_type을 기준으로 값들을 묶어준다.

order by animal_type asc 는 굳이 하지 않아도 어차피 고양이가 Cat이기 때문에
개인 Dog 보다 자동 오름차순으로 더 위로 나온다.

만약 개를 먼저 뽑으라고 했으면 쿼리를 아래처럼 둘 수 있겠다.

ORDER BY animal_type DESC

또 이런식으로 고양이를 먼저 두게 할 수도 있겠다(조건문)

ORDER BY CASE ANIMAL_TYPE WHEN 'Cat' THEN 1 WHEN 'Dog' THEN 2 ELSE 3 END

GROUP BY(통계함수)

  • 특정한 분류를 기준으로 값들을 묶어야 할 때 사용한다.

후기

조금씩 하다보니 재미있는 것 같다. RDS 프리 티어 사용기념으로 문제를 풀어봤다.
직접 database를 만들어서 하면 더 쉽게 되는 것 같으니 한번 참고해보길 바란다.
Aws Rds 무료 사용하는 방법

profile
개발자입니다.

0개의 댓글