본문 바로가기

오라클11

오라클 - HAVING절 정리[ 부제 - WHERE절의 중요성 ] 이번에는 HAVING 절에 대해 정리해보겠습니다. 이 절만 정리하면 SELECT => FROM => WHERE => GROUP BY => HAVING => ORDER BY 순서 모두를 살펴보게 되겠네요 :) 그럼 한번 살펴보겠습니다. 먼저 아래 예시를 보겠습니다. emp 테이블에서 각 부서의 직책별로 급여의 평균이 2000이상인 행만 출력하는 쿼리를 작성하세요. 밑에 답을 보시기 전에 한번 작성해 보시길 추천합니다. SELECT deptno, job, avg(sal) FROM emp WHERE avg(sal) >= 2000 GROUP BY deptno, job ORDER BY deptno, job; 이렇게 작성하신분들은 왜 안되나 싶을겁니다. 상태 보니까 아무리봐도 맞는데 말입니다. 나온 오류를 읽어볼까.. 2023. 2. 8.
오라클 - GROUP BY 정리 이번 글에서는 GROUP BY절에 대해 정리해보겠습니다. 해당 글에서는 emp 테이블을 사용하였습니다. 1. GROUP BY 사용법 SELECT lower(ename), sum(sal) FROM emp; 위 결과는 어떻게 나올까요? 사원의 이름을 모두 소문자로 바꾸고 sal급여는 전부 합한 값을 원합니다. 하지만 오류가 나옵니다. 이유는, 단일 행 함수와 그룹 함수는 함께 사용될 수 없기 때문입니다. lower(ename)은 총 14개의 행이 나오겠죠. 단일 행 함수와 함께 사용하고 싶다면, GROUP BY 절을 사용함으로써 해결 할 수 있습니다. SELECT lower(job), sum(sal) FROM emp GROUP BY job; GROUP BY 는 특정 열 또는 데이터를 기준으로 데이터를 그룹으.. 2023. 2. 8.
오라클 - 그룹 함수 정리 지난번엔 다양한 단일 함수에대해 정리해 보았습니다. 이번글은 그룹 함수에 대해 정리해보고자 합니다. - SUM - COUNT - MAX - MIN - AVG 해당 글에서는 emp 테이블을 사용합니다. 1. SUM SUM 함수는 데이터의 합을 구하는 함수입니다. SELECT sum(sal) FROM emp; 또한 지난번에 사원의 연봉을 구할 때, comm 추가수당에 null 값으로 인해 NVL 함수를 안쓰면 추가수당이 있는 사원의 값만 나오게 되었습니다. 그러나 그것은 단일 함수였습니다. 즉, 각 행에 대하여 연산을 진행했던 것이죠. sum은 그룹 함수이기 때문에 해당 컬럼에 null값이 있어도 연산 결과가 나옵니다. SELECT sum(comm) FROM emp; 그리고 sum 함수에도 DISTINCT를.. 2023. 2. 8.
오라클 - DECODE와 CASE 정리 이번 글에서는 DECODE와 CASE에 대해서 정리해보겠습니다. decode와 case는 마치 프로그래밍에서 if문을 쓰는 것과 거의 비슷합니다. 의미상으론 같다고 볼 수도 있겠네요. if문은 만약 ~라면 .... 아니면 이거라면 ... 그 외에 아무것도 아니면 ... 이런식으로 흘러가죠. decode와 case 도 똑같습니다. 그런데 둘이 나눠진건 이유가 있겠죠. 하나하나 알아보겠습니다. 1. DECODE - decode(특정 컬럼, 만약 이거라면, 이렇게, 만약 이거라면, 이렇게, 둘 다 아니면 요거) 예시 문항을 들겠습니다. job 컬럼이 'CLERK'이면 급여를 10퍼 인상 job 컬럼이 'SALESMAN'이면 급여를 5퍼 인상 둘 다 아니면, 기존 급여를 출력 위 예시를 decode로 표현하면 .. 2023. 2. 8.