[프로그래머스] SQL 고득점 Kit : GROUP BY
GROUP BY [링크]
고양이와 개는 몇 마리 있을까
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS count FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY
CASE ANIMAL_TYPE
WHEN 'Cat' THEN 1
WHEN 'Dog' THEN 2
END;
🔎CASE 칼럼명
WHEN 조건 THEN 결과
...
ELSE 결과
END
동명 동물 수 찾기
<SELECT NAME, COUNT(NAME) AS COUNT FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT > 1
ORDER BY NAME;
🔎 WHERE vs HAVING
둘다 조건을 주는 명령어이지만,
WHERE
같은 경우는 모든 테이블에 대해 우선 조건을 주고 GROUP BY(그룹화) 할수 있고
HAVING
은 GROUP BY 된 이후 그룹화되어진 새로운 테이블에 조건을 줄 수 있습니다.
입양 시각 구하기(1)
SELECT HOUR(DATETIME) HOUR, COUNT(DATETIME) COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR >= 9 and HOUR <= 19
ORDER BY HOUR(DATETIME);
🔎 HOUR()
: 날짜 데이터에서 시간만 추출
YEAR , MONTH, DAY, MINUTE, SECOND 다 가능
입양 시각 구하기(2)
SET @hour := -1;
SELECT (@hour := @hour +1) as HOUR , -- 1씩 증가시켜서 해당 시간 카운트
(SELECT COUNT(*) FROM ANIMAL_OUTS
WHERE HOUR(DATETIME)=@hour) AS COUNT
FROM ANIMAL_OUTS
WHERE @hour < 23;
-- 마지막인 @hour=22가 SELECT절에서 +1되어 23까지 카운트 합니다.
🔎 SET @변수명 := 초기값;
- 사용자 정의 변수
- 저장하는 값에 의해 자료형이 정해집니다.
(Integer, Decimal, Float, binary, Float, String 가능) - 초기화 하지 않으면
NULL
값 생성, 자료형은 String - SQL에서
=
을 비교 연산자로:=
을 대입 연산자로 사용
(SET절 에서는 둘 다 대입 연산자로 사용 가능)
Author And Source
이 문제에 관하여([프로그래머스] SQL 고득점 Kit : GROUP BY), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sunho6824/프로그래머스-SQL-고득점-Kit-GROUP-BY저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)