database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40582 게시물 읽기
No. 40582
그룹핑 질문입니다.
작성자
홍감자
작성일
2014-09-30 09:05ⓒ
2014-09-30 09:10ⓜ
조회수
7,508

 

NO WORKORDER_NO MODEL_CODE

1 WO2014080600006 NU-INST-L36EX

2 WO2014080600006 NU-INST-L36EX

3 WO2014080600006 NU-INST-L36EX

4 WO2014080600006 NU-INST-L36EX

5 WO2014080600006 NU-INST-L36EX

6 WO2014080600006 NU-INST-L36EX

7 WO2014080600006 NU-INST-L36EX

8 WO2014080600006 NU-INST-L36EX

9 WO2014080600006 NU-INST-L36EX

10 WO2014080600006 NU-INST-L36EX

 

위와 같은 데이터가 있는데 workorder_no에 대해서 model_code 카운팅을 하려고

SELECT COUNT(MODEL_CODE)

  FROM (

               SELECT WORKORDER_NO, MODEL_CODE

                   FROM TEST 

               WHERE WORKORDER_NO = 'WO2014080600006'

                GROUP BY WORKORDER_NO

            )

원래 이렇게 작성해서 MODEL_CODE 1건을 가져왔었는데 더 좋은 방법이 있나해서요.

참고로 위 테이블의 데이터는 3백만건 이상인데 쿼리문에 인라인뷰로 되어 있어서 속도 개선 좀 해보려구요...

 

 

이 글에 대한 댓글이 총 2건 있습니다.

 플랜을 떠보신후 옵티마이져 방식에 따른 알맞은 Hint구문을 사용해 보세요

야간비행(야간비행)님이 2014-09-30 21:10에 작성한 댓글입니다.

작성하신 쿼리는 문법 오류 쿼리입니다.
Group By 의 기준 항목(workorder_no)이 아닌 일반 항목(model_code )이
Select 절에 그냥 올 수 없습니다.
반드시 그룹함수(min/max 등)와 함께 사용되어야 합니다.
MySQL 이라면 오류는 안나지만 올바른 사용법이라고 볼 수 없을 듯 하구요.
작성하신 쿼리의 실행절차를 살펴보면...
1. 조건절에서 특정 workorder_no 만 가져와
2. workorder_no 로 Group By 하고
3. 최종 Count 한다면
결과는 무조건 1 또는 0 밖에 안나오겠네요.
결국 원하는 것은 데이터의 존재유무인듯 합니다.
조건을 만족하는걸 모두 가져와 중복제거하고 카운트하는것은 비효율입니다.
조건을 만족하는 것이 존재하는지 여부만 확인하는 방법으로 하세요.
SELECT NVL(MIN(1), 0) cnt
  FROM test
 WHERE workorder_no = 'WO2014080600006'
   AND ROWNUM <= 1
;

마농(manon94)님이 2014-10-01 15:26에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40585할인 쿼리 관련 질문입니다. [3]
황의중
2014-10-04
7093
40584몇번째 구분자 사이의 문자열만 추출 [4]
조성훈
2014-10-01
7699
40583쿼리 질문 드려봅니다. [2]
야간비행
2014-09-30
7281
40582그룹핑 질문입니다. [2]
홍감자
2014-09-30
7508
40581오라클 8.1.5 버전 윈도우용 가지고 계신분 계신가요?
최창식
2014-09-26
7061
40580LOB STORE 관련 TABLESPACE 문의
모모
2014-09-25
7963
40579sub-total, total 가져올때 row수를 같이 가져올수있는방법이 있을까요?
자바천재
2014-09-25
7628
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.032초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다