[데이터 베이스] 4. SELECT 복수행 함수

귤's avatar
Feb 25, 2025
[데이터 베이스] 4. SELECT 복수행 함수

1. 세로 연산의 원리

그룹 함수를 쓰면 세로 연산이 된다. 세로 연산이 되면 결국 새로운 하나의 줄을 만들어낸다. (프로젝션이 아니다.) 새로운 줄에 다른 칼럼이 표현되고 싶으면, 값이 같으면 스쿼시 된다.
그룹핑 방법 예시
-- 세로 연산 -- 1. 그룹 함수 select avg(height) from student; select count(height) from student; select sum(height) from student; select min(height) from student; select max(height) from student;

2. Group by 해서 연산하기

  • 전체 행을 세로 연산 하려면 무엇을 쓸까? - sum, max, min, count, avg (그룹 함수)
  • 특정 행들을 세로 연산 하려면 무엇을 쓸까? - where 과 그룹 함수
  • 특정 그룹만 세로 연산 하려면 무엇을 쓸까? - where과 그룹 함수
  • 그룹 별로 세로 연산 하려면 무엇을 쓸까? - group by와 그룹 함수
💡
Group by, Union All
💡
그룹핑하기
-- 3. 그룹핑 하기 select avg(sal), DEPTNO from emp where deptno = 10 union all select avg(sal), DEPTNO -- 동일할 경우 스쿼시(찌그러뜨린다)해서 넣어준다. 20이 나옴 from emp where deptno = 20 union all select avg(sal), DEPTNO from emp where deptno = 30;
notion image
 
notion image
notion image
notion image
 
select avg(sal), DEPTNO from emp group by deptno;
notion image
 
select avg(sal), DEPTNO -- 동일할 경우 스쿼시(찌그러뜨린다)해서 넣어준다. 20이 나옴 from emp where deptno = 20;
notion image
select avg(sal), job -- 동일하지 않기 때문에 스쿼시가 안 됨. from emp where deptno = 20;

3. 원하는 행만 세로 연산 하기

 
select floor (avg(pay)) from professor where position = "정교수";
notion image
select avg(height) from student;
notion image
select min(height), name -- 연산이 안됨 from student;
💡
name을 끄집어내서 찌그러뜨릴 수 없기 때문에!
 

4. 학년 별 키의 평균이 보고 싶은 예제

-- 4. 그룹핑 원리 실습 / 문제 : 학년 별 키의 평균을 보고싶다. select * from student; select avg(height), grade from student group by grade;
notion image

5. 학년 별 키의 평균을 보고 싶다. + 주민 번호 앞 두 자리 까지 포함해서 그룹 하기

-- 문제 : + 학년 별 키의 평균을 보고싶다. 주민 번호 앞 두자리까지 select avg(height), grade, substr(jumin, 1,2) from student group by grade, jumin;
notion image
select job, DEPTNO, avg(sal) from emp group by job, DEPTNO;
notion image

1) 10으로 그룹 된 거만 보기 싫을 때

💡
having != ;
그룹으로 다 묶고 나서 where을 써야할 때 having으로 사용할 수 있음
select job, DEPTNO, avg(sal) from emp group by job, DEPTNO having DEPTNO != 10;
notion image

2) having 쓴 예제

-- 평균 연봉이 2000 이상인 부서는? select avg(sal), deptno from emp group by DEPTNO having avg(sal) > 2000;
notion image
 
Share article

gyul