[SQL/프로그래머스] GROUP BY_입양 시각 구하기(1): ORDER BY와 GROUP BY의 차이점

👀 문제

https://programmers.co.kr/learn/courses/30/lessons/59412

👊 첫 번째 도전

1. 설계

  1. DATETIME의 시를 출력하기위해 HOUR키워드를 사용한다.
  2. 시간대별로 갯수를 세므로 COUNT를 사용한다.
  3. 9시부터 19시까지이므로 조건절 WHERE에서 제한을 둔다.
  4. ORDER BY를 이용해 시간대 순으로 정렬한다.
  5. 출력문 조건에 맞게 AS를 사용한다.

2. 구현

SELECT HOUR(DATETIME) AS 'HOUR', COUNT(HOUR(DATETIME)) AS 'COUNT'
FROM ANIMAL_OUTS
WHERE 9<=HOUR(DATETIME) AND HOUR(DATETIME)<=19
ORDER BY HOUR(DATETIME);

3. 결과

실행결과 실패

4. 문제점

ORDER BY가 아니라 GROUP BY를 사용해야한다.

👊 두 번째 도전

1. 설계

  1. GROUP BY를 이용한다.

2. 구현

SELECT HOUR(DATETIME) AS 'HOUR', COUNT(HOUR(DATETIME)) AS 'COUNT'
FROM ANIMAL_OUTS
WHERE 9<=HOUR(DATETIME) AND HOUR(DATETIME)<=19
GROUP BY HOUR(DATETIME);

3. 결과

실행결과 🤟 성공 🤟

4. ORDER BY와 GROUP BY

  • ORDER BY: 조회된 결과의 레코드들을 원하는 기준으로 정렬해 출력한다. 제일 마지막 줄에 위치하여 조회된 자료를 정리하는 느낌이다. ALIAS명도 사용 가능하다.
  • GROUP BY: 그룹별 통계정보를 제공한다. 데이터베이스가 GROUP BY에 명시된 칼럼 순서대로 오름차순 정렬을 실시한다. ALIAS 명을 사용할 수 없고, WHERE절에 올 수 없다. HAVING절을 이용해 제한조건을 둔다.

👏 해결 완료!

참고