woo8386
154
2020-10-29 23:04:13 작성 2020-11-02 15:41:08 수정됨
1
137

SQL질문.. Querydsl


데이터가 이렇게 있을때

GNO를 그룹별로 해서 NO가 제일 작은거의 FILENAME, 총개수를 얻으려고 합니다.

SELECT A.GNO , A.FILENAME, CNT
FROM FILE A
JOIN(
    SELECT MIN(NO) NO, COUNT(GNO) CNT
    FROM FILE
    GROUP BY GNO
)B ON A.NO = B.NO

조인 서브쿼리에서 GNO를 그룹으로 해서 NO가 제일 작은거와, 총개수를 얻고

NO로 조인하여 파일네임을 붙였는데요.


JPQL은 from이나 join인절에서 서브쿼리가 안된다고 하는데 어떻게 변경해야 할지 감이 안옵니다.

작성한 SQL에서 서브쿼리 없이 값을 얻을 방법이 있을까요??


0
  • 답변 1

  • ukyo
    38
    2020-10-30 11:31:54

    keep구문 사용하시면 됩니다.

    with test as( 
    select '1' as no, '1' as gno, 'aaa' as name  from dual
    union all
    select '2' as no, '1' as gno, 'bbb' as name  from dual
     union all
    select '3' as no, '1' as gno, 'ccc' as name  from dual
     union all
    select '4' as no, '2' as gno, 'ddd' as name  from dual
     union all
    select '5' as no, '2' as gno, 'eee' as name  from dual
    union all
    select '6' as no, '3' as gno, 'hhh' as name  from dual
    )
    select gno 
           ,count(*) 
           ,min(name) keep ( DENSE_RANK FIRST ORDER BY no ) as aaa
    from test
    group by gno
    


  • 로그인을 하시면 답변 을 등록할 수 있습니다.