DBMS/SQLQuery(29)
-
나눗셈 몫
select floor(-10/3),trunc(-10/3) from dual; TRUNC 함수를 사용하여 소수점 이하를 버릴 수 있다. FLOOR 함수는 주어진 숫자의 내림을 반환하고, TRUNC 함수는 소수점 이하를 버리고 정수 부분만을 반환한다 -10/3은 -3.333...이므로 내림한 값은 -4이고, 소수점 이하를 버린 값은 -3이다.
2024.05.08 -
DECODE 함수에서 NULL
DECODE 함수에서 NULL 사용을 주의해야 한다. DECODE 함수는 JOB_ID가 'AD_PRES'인 경우에는 NULL을 반환하고, 그렇지 않은 경우에는 해당 직원의 SALARY를 반환한다. 이때 'AD_PRES' 직업을 가진 직원의 SALARY는 NULL로 처리되며 'AD_PRES' 직업을 가진 직원의 SALARY 값을 무시하고 나머지 직원들의 SALARY 중 최대 값을 찾게 된다. SELECT MAX(DECODE(JOB_ID, 'AD_PRES', NULL, SALARY)) AS MAX_SAL FROM HR.EMPLOYEES;SELECT MAX( CASE WHEN JOB_ID = 'AD_PRES' THEN NULL ELSE SALARY END) AS MA..
2024.04.19 -
sql 절 우선순위
sql 문에서 연산과 clause의 우선순위를 제대로 알아야 속도향상을 기대할 수 있다. 작성 우선순위 select from join where group by having order by limit 실행 우선순위 from join where group by having select order by limit ex 생산실적과 출하실적 두 테이블을 join 하여 도착지별 생닭중량 합이 5kg 을 초과하는 곳 중에서 생닭중량 합을 기준으로 내림차순했을 때 TOP 3 만 출력되도록 하는 쿼리 select b.destination, sum(a.raw_weight) "prod_sum" from prod a inner join ship b on a.chick_no = b.chick_no where a.disease..
2024.04.13 -
NTILE
SELECT ENAME, JOB, SAL, NTILE(1) OVER (ORDER BY SAL DESC) AS N1, NTILE(2) OVER (ORDER BY SAL DESC) AS N2, NTILE(3) OVER (ORDER BY SAL DESC) AS N3 FROM EMP; SELECT ENAME, JOB, SAL, NTILE(1) OVER (PARTITION BY DEPTNO ORDER BY SAL DESC) AS N1, NTILE(3) OVER (PARTITION BY DEPTNO ORDER BY SAL DESC) AS N3, NTILE(5) OVER (PARTITION BY DEPTNO ORDER BY SAL DESC) AS N5, DEPTNO FROM EMP; NTILE 함수는 윈도우 내의 행..
2024.03.08 -
CUME_DIST
SELECT ENAME, SAL, COUNT(*) OVER (ORDER BY SAL) AS SALCOUNT ,--누적 순위 COUNT(*) OVER() AS TOTAL_COUNT, --전체 카운트 ROUND(COUNT(*) OVER(ORDER BY SAL) / COUNT(*) OVER(),2) AS "CNT/TOTALCNT" FROM EMP; SELECT ENAME, SAL, COUNT(*) OVER (ORDER BY SAL) AS SALCOUNT ,--누적 순위 COUNT(*) OVER() AS TOTAL_COUNT, --전체 카운트 ROUND(COUNT(*) OVER(ORDER BY SAL) / COUNT(*) OVER(),2) AS "CNT/TOTALCNT", ROUND(CUME_DIST() OVE..
2024.03.08 -
RATIO_TO_REPORT
- 직원들을 부서별로 그룹화하여 각 부서 내에서 급여(`SAL`)의 `RATIO`와 `CUME_DIST`를 계산SELECT DEPTNO, ENAME, SAL, round(RATIO_TO_REPORT(SAL) OVER (PARTITION BY DEPTNO),2) AS Salary_Ratio, round(CUME_DIST() OVER (PARTITION BY DEPTNO ORDER BY SAL),2) AS Salary_Cumulative_DistFROM EMP;
2024.03.08