본문 바로가기

전체 글

(144)
SQL 데이터 분석함수 - 상위비율구하기 Cume_dist () over ( partition by ~ order by ~ desc/asc) CUME_DIST(순위의 비율 출력하기) → 상위 몇 % ? 예제 : 이름, 월급, 월급순위, 월급순위의비율을 출력 select ename, sal, dense_rank() over (order by sal desc)as 순위 , cume_dist () over (order by sal desc)as 순위비율 from emp; → emp table 기준으로 1등은 1/14 로 계산된 비율 2등은 3/14 로 계산된비율(2등이 2명이기 때문에 )입니다. 문제 179 : 클래스타입,이름, 나이, 그옆에 클래스 타입별로 각각 나이가 높은 순서대로 자기의 나이에 대한 순위의 비율이 출력 select class_type, ename, age, address, cume_dist() over ( partition b..
SQL 데이터 분석함수 - 등급 출력 Ntile( 숫자) over( order by ~ desc/asc ) 데이터 분석함수는 그룹함수가 아닌 별도의 함수이다. NTILE(등급 출력하기) → ntile ( 원하는 등급 갯수) over ( order by 컬럼 desc / asc) as 등급 예제 : 직업이 'ANALYST, MANAGER, CLERK 인 사원들의 이름과 직업과 월급과 등급을 출력하는데 등급을 4등급으로 나눠서 출력하세요 select ename, job, sal, ntile(4) over( order by sal desc) 등급 from emp where job in ('ANALYST','MANAGER','CLERK'); 0
SQL 데이터 분석함수 - 순위출력 Rank () over ( partition by /order by ~ desc/asc), Dense_Rank () 데이터 분석함수 → 그룹함수 가 아닌 별도의 함수 이다. RANK (순위) (RANK () OVER (partition by order by desc or asc ) → OVER = 확장하다. →즉 OVER 다음에 나오는 괄호안의 내용으로 확장해서 RANK를 출력하겠다는 뜻. 예제 : 이름과 월급을 출력하고 월급이 높은 순으로 순위를 출력 select ename, sal, rank() over (order by sal desc) as 순위 from emp; → 설명 () 의 내용? 괄호 안의 내용을 확장해서 순위를 출력해라. 예제 : 직업이 애널리스트, 매니저 인 사원들의 이름 직업 월급과 월급에 대한 순위를 출력 select ename, job, sal, rank() over (order by sal ..
SQL 다중행 함수 - 그룹함수 (Count) 건수 COUNT (건수를 세는 함수) count 또한 그룹함수이기때문에 null 값을 무시하고 계산해 준다. → null 값이 없는 컬럼을 기준으로 count 를 해주어야한다. → 만약 null값이 있는 컬럼으로 count 하게 되면 누락 된다. null 값을 세지 않기 때문. 그래서 제일 확실한 방법은 모든 컬럼 (*) 을 선택하면 확실하다. select count(*) from emp; 문제 : 직업이 세일즈 맨인 사원들이 몇명? select count(*) from emp where job = 'SALESMAN'; → 웬만하면 * 을 쓰자!! 문제 : 우리반 통신사가 lg 인 학생들은 전부 몇명인지 카운트 출력 select count(*) from emp14 where lower(telecom) = 'l..
SQL 다중행 함수 - 그룹함수 (SUM) 토탈값 SUM (토탈값) GROUP 함수의 특징 : null 값을 무시한다. 예제 : 커미션의 토탈값을 출력 select sum(comm) from emp; or select sum(nvl (comm,0)) from emp; → 두개의 sql 중 속도가 빠른 sql 은 무엇인가? 첫번째 sql 이 속도가 더 빠르다. NULL 값을 무시하고 계산하기때문에 식이 줄어든다. 두번째 sql 은 null 값이 0으로 치환되어 sum 연산에 포함되어있다. 따라서 만약 데이터가 1억개 넘는다고 하면 0 을 더하는 식이 있기 때문에 연산시간이 너무 늘어나게 된다. 문제 : 직업 , 직업별 토탈월급을 출력 , 직업별토탈월급이 높은 순으로 출력 select job, sum(sal) from emp group by job orde..
SQL 다중행 함수 - 그룹함수 (AVG) 평균값 구하기 AVG (평균 출력) → 만약 출력했을때 소수점이 너무많아서 안나오게 하고싶다면 round 둘러준다. 특징 NULL 값이 있을 경우 avg 는 계산할때 NULL 값을 빼고 계산한다. → 그룹함수의 특징이다. 예제 : 우리반 테이블에서 평균 나이를 출력하세요 select round(avg(age),1) from emp14; 문제 : 직업, 직업별 평균월급 출력 select job, round( avg(sal)) from emp group by job; 문제 : 커미션을 다 더해서(null 포함) 전체 사원수로 나누게 하려면 ? select avg(nvl(comm,0)) from emp; 설명 : null 값을 0으로 치환하여 평균값을 출력한다. 문제 : class_type , class_type별 평균나이..
SQL 다중행 함수 - 그룹함수 (MIN) 최소값 MIN (최소값 출력) min 만 출력한다면 GROUp by 절은 필요없다. 하지만 다른 컬럼과 함께 Min 의 값을 도출하려면 GROUP by 절을 꼭 사용해주어야 오류 없이 출력된다. 예제 : 부서번호가 20번인 사원들의 최소월급 select min(sal) from emp where deptno = 20 ; 문제 : 직업, 직업별 최소월급 출력 , 직업을 abcd 순으로 출력 select job, min(sal) from emp group by job order by job asc; 문제 : 부서번호, 부서번호별 최소 월급을 출력 부서번호별 최소월급이 낮은것부터출력 select deptno, min(sal) from emp group by deptno order by 2 asc; 문제 : 입사년도(..
SQL 다중행 함수 - 그룹함수 MAX (최대값) 다중행 함수??? —> 함수 —> 함수 —> —> 함수 여러개의 함수가 입력되어서 하나의 행으로 출력 되어지는 함수 → 그룹함수는 NULL 값을 무시합니다. 그룹함수를 사용하려면 GRoup by 절을 사용해야한다. MAX (최대값 출력하기) 예제 : 사원 테이블에서 최대 월급만 출력 select max(sal) from emp; 문제: 직업이 세일즈 맨 인 사원들 중에 최대월급 select max(sal) from emp where job = 'SALESMAN'; 옆에 세일즈맨이 뜨도록 select job, max(sal) from emp where job = 'SALESMAN'; → 이렇게 하면 에러가 난다 이유는?단일그룹의 그룹함수가 아니다! 마지막 실행이 select 절이 마지막 이기때문에 wher..