상봉동개발자

프로그래머스 - SQL 고득점 Kit (SELECT, SUM, MAX, MIN, GROUP BY) 본문

코테준비

프로그래머스 - SQL 고득점 Kit (SELECT, SUM, MAX, MIN, GROUP BY)

상봉동개발자 2022. 8. 2. 23:39
728x90

SELECT

SELECT 쪽은 워낙 문법이 간단해서 쉬웠다. 몇개까지 가져오는 LIMIT 문법만 살짝 어색했다.

SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1

SUM, MAX, MIN

이 부분도 쉬웠다. 중복 제거해서 COUNT 하는 부분만 어색했다. (DISTINCT 를 count 안에 사용)

SELECT COUNT(DISTINCT NAME) AS count FROM ANIMAL_INS

GROUP BY

Group by 는 많이 안써본 문법이라 어색 했지만 공부하니 쉬웠다.

참고) HAVING vs WHERE

  • HAVING: group by 된 행에 만 사용 가능 (group by 절 뒤에 사용)
  • WHERE: 개별 행에 적용 가능 (group by 절 앞에 사용)

추가로 아예 하나 못푼 문제가 있다. (SET 을 이용한 변수 설정 문제)

문제이름

  • 사이트/난이도: 프로그래머스/ 입양 시각 구하기 (2)
  • 코드
-- 코드를 입력하세요
SET @HOUR = -1;
SELECT (@HOUR := @HOUR + 1) AS HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @HOUR) AS COUNT
FROM ANIMAL_OUTS
WHERE @HOUR < 23
  • 느낀점) Hour 컬럼에서 데이터가 없는 것은 0으로 설정해야 하는데 어떻게 해야할지 감이 안왔다. 그래서 다른 사람의 코드를 참고해보니 SET 으로 MySQL에서 변수를 설정해서 푸는 것을 확인 할 수 있었다. SET 으로 변수 설정 할 수 있다는걸 처음 알았다…. 좀더 SQL 공부를 해야겠다!

IS NULL

간단했다. 근데 컬럼값이 NULL 인지 체크해서 다른 값으로 반환하는 함수인 IFNULL 사용 어색했다.

SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name'), SEX_UPON_INTAKE FROM ANIMAL_INS
728x90
Comments