[MS_SQL]group by와 조인을 하는 방법이 있나요? 0 2 1,565

by 준일정 [SQL Query] MSSQL SQL [2018.03.29 14:19:58]


----최대 급여가 500을 초과하는 부서에 대해서 최대,최소 급여, 부서명 를 구하십시오 

SELECT DEPTNO, MAX(SAL) AS '최대급여', MIN(SAL) AS '최소급여'
FROM EMP GROUP BY DEPTNO HAVING MAX(SAL) >500;

 

부서명을 구하기 위해서는 dept 테이블과 emp 테이블을 조인해야 할 터인데, 

조인 방법은 아닌데 문법을 잘 모르는 것 같습니다. 

매번 도움 받아서 감사합니다!!!

by 마농 [2018.03.29 14:37:26]
-- 1. 조인 후 그룹바이 --
SELECT d.dname    AS "부서명"
     , MAX(e.sal) AS "최대급여"
     , MIN(e.sal) AS "최소급여"
  FROM emp e
 INNER JOIN dept d
    ON e.deptno = d.deptno
 GROUP BY e.deptno, d.dname
HAVING MAX(e.sal) > 500
;
-- 2. 그룹바이 후 인라인뷰를 이용한 조인
SELECT d.dname    AS 부서명
     , e.최대급여
     , e.최소급여
  FROM (SELECT deptno
             , MAX(sal) AS 최대급여
             , MIN(sal) AS 최소급여
          FROM emp
         GROUP BY deptno
        HAVING MAX(sal) > 500
        ) e
 INNER JOIN dept d
    ON e.deptno = d.deptno
;
-- 3. 스칼라 서브쿼리를 이용한 조인
SELECT (SELECT d.dname FROM dept d WHERE d.deptno = e.deptno) AS 부서명
     , MAX(sal) AS 최대급여
     , MIN(sal) AS 최소급여
  FROM emp e
 GROUP BY deptno
HAVING MAX(sal) > 500
;

 


by 준일정 [2018.03.29 14:54:36]

우와.. 이렇게나 많은 방법이 있네요 감사합니다!!!

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