[데이터베이스] #6 SQL III (집계 함수, 조인 테이블)

2024. 4. 8. 15:47·전공/데이터베이스
목차
  1. 1. 집계 함수
  2. count 절
  3. group by 절
  4. having 절
  5. 널 값과 집계함수
  6. 2. 조인 테이블
  7. 외부 조인
  8. 조인 조건
  9. 조인 예제
728x90
반응형

목차

  1. 집계 함수
    1. count 절
    2. group by 절
    3. having 절
    4. 널 값과 집계 함수
  2. 조인 테이블
    1. 외부 조인
    2. 조인 조건
    3. 조인 예제

1. 집계 함수

avg, min, max, sum, count

평균값, 최솟값, 최댓값, 값의 합, 개수

count 절

Select count(*) from student
  • count(*) 테이블의 터플 개수
Select count(**distinct** gender) from student
  • 유일한 값의 개수를 반환
  • Male, Female만 있으므로 결과는 2

group by 절

Select deptName, avg(salary)
from professor
group by daptName;

daptName 속성 값으로 그룹을 나눈 후

각 그룹에 대하여 salary 속성의 평균값을 구하는 질의어

group by 절을 사용할 때,

group by 절에 나온 속성과 집계함수만이 select 절에 나올 수 있음

having 절

Select deptName, avg(salary)
from professor
group by deptName
having avg(salary) > 6900;

group by 절 결과로 생성된 그룹에 대하여 임의 조건을 명시하는 데 사용

where 절은 조건을 만족하는 터플이 다음 단계로 이관, having 절은 조건을 만족하는 그룹이 다음 단계로 이관

where 절과 having 절이 동시에 select 문장에 존재하면 where 절 조건이 먼저 적용되고 생성된 그룹에 대하여 having 절 조건이 적용

Select dname, count(*)
from department, employee
where dnumber=dno and salary>4000 and
dno in (select dno from employee
				group by dno
				having count(*)>5)
group by dname;

5명 이상의 종업원을 가진 부서에서 4만 불 초과 소득을 가진 종업원 수를 구하는 SQL

하지만, 만약 10명의 종업원을 가진 부서에서 4만 불 초과 소득인 사람이 없다면 <관리처, 0>이 나와야 하나 where절에서 그룹이 생성되지 않기 때문에 원하는 결과가 나오지 않음

널 값과 집계함수

집계함수는 기본적으로 널 값 무시

모든 값이 널 값이면 count 함수는 0 반환, 나머지 집계함수는 null 반환

avg 함수는 null 값을 무시하므로 평균을 구할 때 null을 빼고 나눔

null 값이 포함된 속성으로 그룹을 만들면 널 값은 하나의 값으로 취급함

Select hourWage, count(*)
from mytable
group by hourWage;

ex) <5000, 1>, <6000, 1>, <null, 2>

 


2. 조인 테이블

크게 내부 조인과 외부 조인이 존재

외부 조인

값 매치가 되지 않아 손실되는 정보를 유지

조인 연산에서 제외된 터플을 널 값을 이용하여 결과 테이블에 첨가

조인 조건

자연적인 방법

조인 조건을 명시하는 방법

자연 조인에 사용되는 속성을 명시하는 방법

조인 예제

 

myCourse inner join myPrereq on myCourse.cID = myPrereq.cID

inner 생략 가능

자연조인이 아닌 일반 조인은 모든 속성이 결과 테이블에 나옴

 

myCourse left outer join myPrereq on myCourse.cID, myPrereq.cID

외부 조인의 경우에 매치되지 않은 터플의 추가로 인하여 조인 속성은 중복되어 나오나 속성 값은 서로 다름

 

myCourse natural right outer join myPrereq

myCourse natural full outer join myPrereq

자연 조인의 경우 공통으로 존재하는 속성이 조인 속성이며,

조인 속성은 한번 결과 테이블에 나옴

 

myCourse left outer join myPrereq using(cID)

using 표현은 natural 키워드가 없어도 자연 조인을 생성

728x90
반응형

'전공 > 데이터베이스' 카테고리의 다른 글

[데이터베이스] #7 SQL IV (중첩 서브질의)  (1) 2024.05.20
[데이터베이스] #1~6 정리 (데이터베이스 소개 ~ 조인 테이블)  (0) 2024.04.08
[데이터베이스] #5 오라클 실습 (개념)  (0) 2024.04.08
[데이터베이스] #4 SQL II (SELECT, NULL 값)  (0) 2024.04.08
[데이터베이스] #3 SQL I (데이터베이스 언어, DDL SQL)  (0) 2024.04.08
  1. 1. 집계 함수
  2. count 절
  3. group by 절
  4. having 절
  5. 널 값과 집계함수
  6. 2. 조인 테이블
  7. 외부 조인
  8. 조인 조건
  9. 조인 예제
'전공/데이터베이스' 카테고리의 다른 글
  • [데이터베이스] #7 SQL IV (중첩 서브질의)
  • [데이터베이스] #1~6 정리 (데이터베이스 소개 ~ 조인 테이블)
  • [데이터베이스] #5 오라클 실습 (개념)
  • [데이터베이스] #4 SQL II (SELECT, NULL 값)
dev_ares
dev_ares
대학에서 컴퓨터공학을 전공하고 있는 학생입니다.
    반응형
    250x250
  • dev_ares
    노트
    dev_ares
  • 전체
    오늘
    어제
    • 분류 전체보기 (187)
      • IT 트랜드 (2)
      • 백엔드 (18)
        • Java + Spring (8)
        • Kotlin + Spring (5)
        • 백엔드 (5)
      • 프론트엔드 (1)
        • React (1)
      • 대외활동 (17)
        • 42서울 (17)
      • 백준 (6)
        • Java (2)
        • C++ (3)
      • 전공 (121)
        • 객체지향프로그래밍 (17)
        • 자료구조 (23)
        • 리눅스시스템관리 (16)
        • 컴퓨터구조 (25)
        • 네트워크 (25)
        • 데이터베이스 (15)
        • 기타 전공 (0)
      • 프로그래밍 언어 (18)
        • Java (5)
        • Swift (4)
        • C++ (1)
        • Kotlin (8)
      • 기타 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    사설 문제
    42서울
    백준
    자료구조
    명령어
    자바
    리눅스
    C++
    메모리 계층 구조
    컴퓨터구조
    컴공 포트폴리오
    컴퓨터 구조 및 설계
    단일 사이클
    반복자
    데이터패스
    상속
    코틀린
    추가 문제
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
dev_ares
[데이터베이스] #6 SQL III (집계 함수, 조인 테이블)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.