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 39093 게시물 읽기
No. 39093
쿼리 도움이 절실합니다.
작성자
박주영(vf19)
작성일
2011-11-12 18:01
조회수
4,617
path_id cost    노선id          dist    seq_no  cost    출발노선정류장id 도착노선정류장id  노선명                       출발정류장명            도착정류장명
7677 487 LB000159 90 1 5.72064 LB000159017 LB000159018 605번(강서공영차고지~후암동) 한국가스공사서울지사 88체육관
7677 638 LB000159 114 2 5.72064 LB000159018 LB000159019 605번(강서공영차고지~후암동) 88체육관 하이웨이주유소
7677 427 LB000159 78 3 5.72064 LB000159019 LB000159020 605번(강서공영차고지~후암동) 하이웨이주유소 등촌중학교.한국정보문화진흥원
7677 TRN 522 4 5.72064 LB000164080 LB000159020 650번(외발산동~서울대입구) SC제일은행.강서도서관 등촌중학교.한국정보문화진흥원
7677 451 LB000164 102 5 5.72064 LB000164080 LB000164081 650번(외발산동~서울대입구) SC제일은행.강서도서관 백석초등학교.한국정보문화진흥원
7677 546 LB000164 126 6 5.72064 LB000164081 LB000164082 650번(외발산동~서울대입구) 백석초등학교.한국정보문화진흥원 화진코스메틱
7677 TRN 126 7 5.72064 LB000159001 LB000164082 605번(강서공영차고지~후암동) 강서공영차고지 화진코스메틱
7677 325 LB000159 60 8 5.72064 LB000159001 LB000159002 605번(강서공영차고지~후암동) 강서공영차고지 개화검문소
 
 
위와 같은 결과물이 있습니다. 
제가 원하는 결과는
경로내역_SOURCE 라는  
LB000159017+LB000159018+LB000159019+LB000164080+LB000164080+LB000164081+LB000159001+LB000159001+LB000159002 
SEQ_NO 순서대로 출발노선정류장ID+도착노선정류장ID 한 값 하나(중복된 것은 제외합니다)
경로내역_VALUE라는 
605번(강서공영차고지~후암동)+한국가스공사서울지사+88체육관+605번(강서공영차고지~후암동) +강서공영차고지+개화검문소
SEQ_NO MIN 인 즉 1인 노선명+출발정류장명+도착정류장명+ SEQ_NO MAX인 즉 8인 노선명+출발정류장명+도착정류장명인
값 
그리고 PATH_ID 에 관해서 SUM(DIST), SUM(SEQ_NO),AVG(COST) 된 값이 필요합니다.
경로내역_SOURCE 과  SUM ,AVG, 하는 부분들은 전에 했던 질문으로 구했으나, 경로내역_VALUE 를 구하는 부분에서 막히네요. 
따로 구해서 LEFT INNER JOIN 을 사용하면 될 것 같은데, 그렇게 하면 시간이 오래걸릴거 같습니다.(데이터가 상당히 많습니다)
도움좀 주시면 감사하겠습니다.
이 글에 대한 댓글이 총 2건 있습니다.

WITH t AS
(
SELECT 7677 path_id, 1 seq_no, '605번(강서공영차고지~후암동)' 노선명, '한국가스공사서울지사' 출발정류장명, '88체육관' 도착정류장명 FROM dual
UNION ALL SELECT 7677, 2, '605번(강서공영차고지~후암동)', '88체육관', '하이웨이주유소' FROM dual
UNION ALL SELECT 7677, 3, '605번(강서공영차고지~후암동)', '하이웨이주유소', '등촌중학교.한국정보문화진흥원' FROM dual
UNION ALL SELECT 7677, 4, '650번(외발산동~서울대입구)', 'SC제일은행.강서도서관', '등촌중학교.한국정보문화진흥원' FROM dual
UNION ALL SELECT 7677, 5, '650번(외발산동~서울대입구)', 'SC제일은행.강서도서관', '백석초등학교.한국정보문화진흥원' FROM dual
UNION ALL SELECT 7677, 6, '650번(외발산동~서울대입구)', '백석초등학교.한국정보문화진흥원', '화진코스메틱' FROM dual
UNION ALL SELECT 7677, 7, '605번(강서공영차고지~후암동)', '강서공영차고지', '화진코스메틱' FROM dual
UNION ALL SELECT 7677, 8, '605번(강서공영차고지~후암동)', '강서공영차고지', '개화검문소' FROM dual
)
SELECT path_id
     , MIN(노선명 ||'+'|| 출발정류장명 ||'+'|| 도착정류장명)
       KEEP(DENSE_RANK FIRST ORDER BY seq_no)
       ||'+'||
       MIN(노선명 ||'+'|| 출발정류장명 ||'+'|| 도착정류장명)
       KEEP(DENSE_RANK  LAST ORDER BY seq_no)
    AS 경로내역_VALUE
  FROM t
 GROUP BY path_id
;

마농(manon94)님이 2011-11-14 10:01에 작성한 댓글입니다.
이 댓글은 2011-11-14 10:03에 마지막으로 수정되었습니다.

주말동안 끙끙대면서 결국에는 inner join 을 썼는데 

이런 방법이 있다니 이 방법도 써봐야겠네요 ^^

정말 감사합니다.

박주영(vf19)님이 2011-11-14 11:46에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39098VARRAY에 대해서 질문 드리겠습니다. [1]
김충현
2011-11-14
3372
39097database vs tablespace [2]
우태열
2011-11-14
4024
39096로컬디비 설치 방법 문의 드려요.. [1]
신동화
2011-11-14
3333
39093쿼리 도움이 절실합니다. [2]
박주영
2011-11-12
4617
39091검색조건을 JOIN VS WHERE에서 줄때 어떤것이 효율적일까요 ? [2]
2011-11-11
3516
39090쿼리문제 조금만 도와주세요. [2]
박주영
2011-11-11
4938
39089view에 hint 사용 관련
오세원
2011-11-11
4128
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다