250x250
Notice
Recent Posts
Recent Comments
Link
상봉동개발자
프로그래머스 - SQL 고득점 Kit (SELECT, SUM, MAX, MIN, GROUP BY) 본문
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
'코테준비' 카테고리의 다른 글
| 정렬 (0) | 2022.09.02 |
|---|---|
| 프로그래머스 SQL 고득점 Kit - JOIN, String, Date (0) | 2022.08.03 |
| 이코테 - 최단경로 (다익스트라, 플로이드 워셜) (0) | 2022.07.10 |
| 이코테 - DP 4문제 (0) | 2022.07.09 |
| 이코테 - 이진탐색 2문제 (0) | 2022.07.05 |
Comments