[Oracle / 프로그래머스 SQL] 입양 시각 구하기(1) - having 절과 쿼리 실행 순서

2022. 2. 15. 16:21· Algorithm
목차
  1. [ 코디테스트 연습 > GROUP BY > 입양 시각 구하기 (1) ]
  2. 1. 테이블 정보
  3.  
  4. 2. 문제
  5.  
  6. 3. 요구사항 분석 및 SQL문
  7. 4.실행결과

[ 코디테스트 연습 > GROUP BY > 입양 시각 구하기 (1) ]

 

1. 테이블 정보

 

2. 문제

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 

09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 

이때 결과는 시간대 순으로 정렬해야 합니다.

 

3. 요구사항 분석 및 SQL문

-- 조회 : 입양시간, 입양횟수
-- 그룹 : 시간대별
-- 정렬 : 시간대 오름차순
SELECT 
    TO_CHAR(DATETIME, 'HH24') AS ADP_HOUR 
  , COUNT(DATETIME) AS ADP_CNT
FROM 
    ANIMAL_OUTS
GROUP BY 
    TO_CHAR(DATETIME, 'HH24')
HAVING 
    TO_CHAR(DATETIME, 'HH24') BETWEEN 09 AND 19
ORDER BY ADP_HOUR

>>

GROUP BY 와 HAVING 절에 별칭 (ADP_HOUR)를 사용했는데 계속 식별할 수 없다는 오류가 떴다.

ORDER BY에는 멀쩡히 인식하는 별칭을 왜 쓸 수 없는것인지,

한번 정의한 ADP_HOUR를 왜 3번이나 반복해서 써야하는지 이해 할 수 없었는데

 

오라클 쿼리 실행순서를 고려하지 않았기 때문이었다.

자바의 변수처럼 별칭은 한번 정의한 값을 담을 것이고, 코드는 위에서 아래로 수행 될 것이라 생각했다.

그래서 이 참에 오라클 쿼리 실행 순서를 정리해둘까 한다.

 

▶ 오라클 쿼리 실행순서

① FROM

② ON

③ JOIN

④ WHERE

⑤ GROUP BY

⑥ CUBE | ROLLUP

⑦ HAVING

⑧ SELECT

⑨ DISTINCT

⑩ ORDER BY

⑪ TOP

 

ADP_HOUR 는 SELECT 절에서 선언한 별칭이기 때문에 GROUP BY , HAVING 절에서는 식별하지 못했던 것.

반면 마지막에 실행되는 ORDER BY 절에서는 사용 할 수 있었다

 

그럼 먼저 실행되는 HAVING 절에서 별칭을 부여하면 인식되나 실험해봤는데 안된다...ㅋㅋㅋ

별칭 부여는 SELECT절에서만 가능한가보다. 그래도 궁굼증 해결!!

 

4.실행결과

저작자표시 비영리 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

[ Java/ 백준 ] 2480.조건문 - 주사위 세개  (0) 2022.11.04
[Oracle / 프로그래머스] 입양 시각 구하기(2) - LEVEL, WITH AS  (0) 2022.02.17
[Oracle / 프로그래머스 SQL 연습] 중복 제거하기 - NULL 과 비교연산자/논리연산자  (0) 2022.02.15
[Oracle / 프로그래머스 SQL 연습] SELECT > 여러 기준으로 정렬하기  (0) 2022.02.15
[Java/백준] 9498.조건문 - 시험성적  (0) 2021.05.25
  1. [ 코디테스트 연습 > GROUP BY > 입양 시각 구하기 (1) ]
  2. 1. 테이블 정보
  3.  
  4. 2. 문제
  5.  
  6. 3. 요구사항 분석 및 SQL문
  7. 4.실행결과
'Algorithm' 카테고리의 다른 글
  • [ Java/ 백준 ] 2480.조건문 - 주사위 세개
  • [Oracle / 프로그래머스] 입양 시각 구하기(2) - LEVEL, WITH AS
  • [Oracle / 프로그래머스 SQL 연습] 중복 제거하기 - NULL 과 비교연산자/논리연산자
  • [Oracle / 프로그래머스 SQL 연습] SELECT > 여러 기준으로 정렬하기
devkmee
devkmee
devkmee
devkmee
devkmee
전체
오늘
어제
  • 분류 전체보기 (40)
    • JavaScript & TypeScript (2)
    • vue.js (1)
    • react (0)
    • Java (4)
    • SQL (6)
    • DevOps (5)
    • Web (2)
    • Algorithm (10)
    • Git (2)
    • IDE (8)
    • 후기 (0)
      • [스터디] Go To Learn 2기 (0)
      • 컨퍼런스_세미나_밋업 (0)

블로그 메뉴

  • 홈
  • 태그
  • GitHub

공지사항

인기 글

태그

  • oracle
  • 오라클 #프로그래머스 #LEVEL #WITH AS
  • Thread
  • ORACLE #프로그래머스
  • intelij
  • Linux
  • Vmare
  • 공간조인
  • VSCode
  • DevOps
  • 객체선택
  • 연습
  • Generic
  • java
  • 가상RESTAPI
  • 레이어조인
  • ubuntu
  • jsconfig
  • 조건문
  • QGIS
  • tsconfig
  • 단축키
  • SQL #ORACLE #프로그래머스
  • map
  • 좌표계수정
  • 가상DB
  • LIST
  • 이클립스
  • 정렬
  • HashMap

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
devkmee
[Oracle / 프로그래머스 SQL] 입양 시각 구하기(1) - having 절과 쿼리 실행 순서
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.