[프로그래머스][MySQL]2.SUM,MAX,MIN

Carvin·2020년 7월 25일
0

2. SUM, MAX, MIN

문제

1) 최댓값 구하기

SELECT DATETIME as '시간' from ANIMAL_INS
     order by DATETIME desc limit 1;
SELECT MAX(DATETIME) as '시간' from ANIMAL_INS;

가장 늦게 동물 보호소에 들어온 동물의 시간을 구하는 문제이다.DATETIME이 가장 늦은 시간을 구하기 위해서는 2가지가 있다.

  • DATETIME을 내림차순으로 정렬한 뒤에 첫번째 행을 뽑는 방법
  • 가장 큰 DATETIME을 가지는 행을 뽑는 방법

2) 최솟값 구하기

SELECT DATETIME as '시간' from ANIMAL_INS
     order by DATETIME limit 1;
SELECT MIN(DATETIME) as '시간' from ANIMAL_INS;

3) 동물 수 구하기 (행 개수 구하기)

SELECT count(ANIMAL_ID) as 'count' from ANIMAL_INS;

동물 보호소에 등록되어있는 동물의 수를 구하기 위해서 animal_id 를 count() 해주었다. 여기서는 모든 동물에게 고유한 animal_id 가 부여되어 있다는 것을 가정한 것이다. 그런데 animal_id 가 아직 부여되지 않은 동물이 있을 수도 있다고 생각할 수 있다. 그럴때에는 행 자체 개수를 세주는 방법이 있다.

  • count(column) : column의 개수를 구하는 것으로 NULL을 제외한다.
  • count(*) : 데이터프레임의 전체 행 개수를 구하는 것으로 NULL을 포함한다.

count(*)의 경우에는 count({아무숫자})와 같다고 하는데 정확한 이유는 찾지 못했다.

4) 중복 제거하기

SELECT count(distinct(NAME)) from ANIMAL_INS;

동물 보호소에 존재하는 동물의 이름의 unique()를 구한다고 이해했다. mysql에서는 unique() 가 아닌 distint를 사용해서 고유값을 구할 수 있다. 그런데 생각보다 unique() 랑 더욱 비슷한 것을 알게 되었다.

단순히 distinct column 을 실행하게 되면 NULL값이 포함되어 표시된다. 이것은 unique() 와 똑같다. 하지만 nunique()와 count(distinct~)를 하게 되면 NULL이 제외된 개수를 반환해 준다.
(distinct column / distinct(column) 모두 가능)

0개의 댓글