Oracle의 Count(*) over (partititon by...) 을 MySql에서는 어떻게 구현 하나요? 0 2 11,665

by 이티 [MySQL] [2017.01.24 21:53:09]


오라클의 특정집합의 Count를 내는 count (*) over (partition by ~~~ ) 을 MySQL 에서는 어떻게 해야 하나요?

by 아발란체 [2017.01.29 00:42:02]

MySQL은 COUNT(*) 하면 그냥 됩니다.

OVER절 부터 기술하여 그룹화 하거나 정렬하는 것은 그냥 COUNT(*)되는 것처럼 따로 항목 잡아 정렬해주시면 됩니다.

 


by 마농 [2017.01.31 13:43:34]
-- 1. 분석함수 --
SELECT deptno, empno, ename
     , COUNT(*) OVER(PARTITION BY deptno) cnt
  FROM emp
 ORDER BY deptno, empno
;
-- 2. 별도 집계 후 조인 --
SELECT a.deptno, a.empno, a.ename
     , b.cnt
  FROM emp a
 INNER JOIN
       (SELECT deptno
             , COUNT(*) cnt
          FROM emp
         GROUP BY deptno
        ) b
    ON a.deptno = b.deptno
 ORDER BY a.deptno, a.empno
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입