안녕하세요
쿼리 관련 질문이 있어서 조언을 얻고자 문의드립니다.
SELECT
ACMP_INTT_NM,
CNT ,
RK
FROM
( SELECT
ACMP_INTT_NM || '('||SUM(TOT_SUM)||')' AS ACMP_INTT_NM ,
COUNT(CNT) AS CNT,
DENSE_RANK() OVER (
ORDER BY
COUNT(RK) DESC ) AS RK
FROM
( SELECT
D.ACMP_INTT_NM ,
D.TOT_SUM ,
D.PJT_ID AS CNT,
DENSE_RANK() OVER (
ORDER BY
COUNT(D.PJT_ID) DESC ) AS RK
FROM
RMTN_PJT_HIS_MAST RPHM,
RMTN_AGRN_INFM RAI,
RMTN_PJT_HIS A ,
RMTN_PJT_ACMP_INTT_HIS D
WHERE
RPHM.PJT_ID = RAI.PJT_ID
AND RPHM.PJT_SEQNO = RAI.PJT_SEQNO
AND RAI.AGRN_PRGS_STTS_CD = 'P0500202'
AND RAI.AGRN_DATE LIKE '%'|| '2018' /**P*/||'%'
AND RPHM.PJT_ID = A.PJT_ID
AND RPHM.PJT_SEQNO = A.PJT_SEQNO
AND RPHM.HIS_SEQNO = A.HIS_SEQNO
AND RPHM.PJT_ID = D.PJT_ID
AND RPHM.PJT_SEQNO = D.PJT_SEQNO
AND RPHM.HIS_SEQNO = D.HIS_SEQNO
AND A.PJT_DSNC_CD <> 'P0305004'
GROUP BY
D.ACMP_INTT_NM,
D.TOT_SUM,
D.PJT_ID )
GROUP BY
ACMP_INTT_NM ) E
WHERE
RK < = 5
GROUP BY
ACMP_INTT_NM,
CNT,
RK
ORDER BY
CNT DESC
해당 쿼리 조회 시
충남대학교(1970397000) 5 1
한국과학기술원(2747829000) 5 1
연세대학교(2874105000) 4 2
조선대학교(680458600) 4 2
중앙대학교(755360000) 4 2
건국대학교(718886000) 3 3
국민대학교(578463000) 3 3
성균관대학교(1536378000) 3 3
울산과학기술원(656969000) 3 3
인하대학교(1775278000) 3 3
전남대학교(4168864800) 3 3
전북대학교(1584276000) 3 3
포항공과대학교(1693584000) 3 3
한밭대학교(619620000) 3 3
가천대학교(1747488000) 2 4
강원대학교(1188117000) 2 4
경북대학교(401520000) 2 4
고려대학교(1259688000) 2 4
동국대학교(412248000) 2 4
동신대학교(524910000) 2 4
명지대학교(1620497000) 2 4
목포대학교(1597839000) 2 4
서울대학교(364290000) 2 4
아주대학교(490460000) 2 4
한국산업기술대학교(1361292000) 2 4
호서대학교(444000000) 2 4
홍익대학교(1805460000) 2 4
경남대학교(187800000) 1 5
경희대학교(2235000000) 1 5
광운대학교(186000000) 1 5
군산대학교(1029102000) 1 5
대진대학교(61410000) 1 5
덕성여자대학교(1172600000) 1 5
형식의 데이터 출력되는데 마지막 컬럼 데이터(랭크) 기준으로 묶어서 1개 로우로 보여줄수 있는 방법이 있을까요???
ex) 랭크 값이 1인 데이터들을 ROW 하나로 대진대학교,덕성여자대학교 외 11건
WITH t(empno, ename,yn, deptno) AS ( SELECT 7369,'Kim','Y',10 FROM dual UNION ALL SELECT 7844,'Park','Y',10 FROM dual UNION ALL SELECT 7566,'Hong','Y',10 FROM dual UNION ALL SELECT 9997,'Lim','Y',20 FROM dual UNION ALL SELECT 9999,'Lee','Y',20 FROM dual UNION ALL SELECT 9900,'Fee','Y',30 FROM dual) SELECT deptno , MAX(DECODE(rn,1,ename)) ename1 , MAX(DECODE(rn,2,ename)) ename2 , MAX(grp_cnt-2) etc_cnt , MAX(DECODE(rn,1,ename)) ||NVL2(MAX(DECODE(rn,2,ename)),','||MAX(DECODE(rn,2,ename)),'') ||CASE WHEN MAX(grp_cnt-2) >0 THEN '외 '||MAX(grp_cnt-2)||' 건' END AS disp_nm FROM ( SELECT t.*, row_number() OVER(PARTITION BY deptno ORDER BY empno) rn , COUNT(*) OVER(PARTITION BY deptno) grp_cnt FROM t ) GROUP BY deptno