• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [MySQL] 27. 연습 문제: GROUP BY/HAVING 절 활용하기
        2024년 06월 10일
        • Song hyun
        • 작성자
        • 2024.06.10.:50
        728x90
        반응형

        [MySQL] 27. 연습 문제: GROUP BY/HAVING 절 활용하기

        1. 문제

        2. 샘플 데이터

        3. 문제 풀이


         

        1. 문제

        -- 문제 1.
        -- 각 부서별 평균 급여 계산하기 (소수점 제거)
        
        -- 문제 2.
        -- 평균 급여가 50000000 금액 이상인 부서 찾기
        
        -- 문제 3.
        -- 각 부서에서 가장 높은 급여를 받는 직원의 급여 출력하기
        
        -- 문제 4.
        -- 특정 부서에서 근무하는 직원 수가 3명 이상인 부서만 출력해주세요.
        
        -- 문제 5.
        -- 각 부서별 평균 급여와 직원 수를 출력해주세요.

         

         


         

        2. 샘플 데이터

        CREATE TABLE tb_employees (
            employee_id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(100) NOT NULL,
            department VARCHAR(50) NOT NULL,
            salary INT NOT NULL
        );
        
        INSERT INTO tb_employees (name, department, salary) VALUES
        ('John Doe', 'Sales', 48000000),
        ('Jane Smith', 'Sales', 55000000),
        ('Alice Johnson', 'Marketing', 50000000),
        ('Chris Lee', 'Marketing', 45000000),
        ('Bob Brown', 'HR', 35000000),
        ('Patricia Pink', 'HR', 40000000),
        ('Michael White', 'Engineering', 75000000),
        ('Anna Black', 'Engineering', 65000000),
        ('Linda Green', 'Engineering', 72000000),
        ('James Red', 'Engineering', 68000000),
        ('Larry Blue', 'Sales', 52000000),
        ('Jessica Purple', 'Sales', 51000000),
        ('Amber Yelow', 'Marketing', 47000000),
        ('Peter Orange', 'HR', 43000000),
        ('Lisa Teal', 'HR', 39000000);

         

         


         

        3. 문제 풀이

         

        (1) 각 부서별 평균 급여 계산하기 (소수점 제거)

         

        *round(): 괄호 안의 수에서 소수점을 제거해줌.

        -- 문제 1.
        -- 각 부서별 평균 급여 계산하기 (소수점 제거)
        select department,round(avg(salary))
        from tb_employees
        group by department;

         

         

        (2) 평균 급여가 50,000,000 이하인 부서를 찾아보기

         

        *AVG(): 괄호 안의 레코드의 평균을 구해줌

        -- 문제 2.
        -- 평균 급여가 50000000 금액 이상인 부서 찾기
        select department,avg(salary)
        from tb_employees
        group by department
        having avg(salary)>50000000;

         

         

        (3) 각 부서에서 가장 높은 급여를 받는 직원의 급여 출력하기

         

        *min()/max(): 괄호 안 컬럼의 최소/최대값을 찾아줌

        -- 문제 3.
        -- 각 부서에서 가장 높은 급여를 받는 직원의 급여 출력하기
        select department, max(salary),min(salary)
        from tb_employees
        group by department;

         

        (4) 특정 부서에서 근무하는 직원 수가 3명 이상인 부서만 출력하기

         

        *count(): 괄호 안의 컬럼에 해당하는 수를 출력(=갯수 출력)

        -- 문제 4.
        -- 특정 부서에서 근무하는 직원 수가 3명 이상인 부서만 출력해주세요.
        select department, count(department)
        from tb_employees
        group by department
        having count(department)>=3;

         

        (5) 각 부서별 평균 급여와 직원 수를 출력해주세요.

        -- 문제 5.
        -- 각 부서별 평균 급여와 직원 수를 출력해주세요.
        select department, round(avg(salary)),count(department)
        from tb_employees
        group by department;

        *전체 코드

        더보기
        use mysb3;
        
        CREATE TABLE tb_employees (
            employee_id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(100) NOT NULL,
            department VARCHAR(50) NOT NULL,
            salary INT NOT NULL
        );
        
        INSERT INTO tb_employees (name, department, salary) VALUES
        ('John Doe', 'Sales', 48000000),
        ('Jane Smith', 'Sales', 55000000),
        ('Alice Johnson', 'Marketing', 50000000),
        ('Chris Lee', 'Marketing', 45000000),
        ('Bob Brown', 'HR', 35000000),
        ('Patricia Pink', 'HR', 40000000),
        ('Michael White', 'Engineering', 75000000),
        ('Anna Black', 'Engineering', 65000000),
        ('Linda Green', 'Engineering', 72000000),
        ('James Red', 'Engineering', 68000000),
        ('Larry Blue', 'Sales', 52000000),
        ('Jessica Purple', 'Sales', 51000000),
        ('Amber Yelow', 'Marketing', 47000000),
        ('Peter Orange', 'HR', 43000000),
        ('Lisa Teal', 'HR', 39000000);
        
        -- 문제 1.
        -- 각 부서별 평균 급여 계산하기 (소수점 제거)
        select department,round(avg(salary))
        from tb_employees
        group by department;
        
        -- 문제 2.
        -- 평균 급여가 50000000 금액 이상인 부서 찾기
        select department,avg(salary)
        from tb_employees
        group by department
        having avg(salary)>50000000;
        
        -- 문제 3.
        -- 각 부서에서 가장 높은 급여를 받는 직원의 급여 출력하기
        select department, max(salary),min(salary)
        from tb_employees
        group by department;
        
        -- 문제 4.
        -- 특정 부서에서 근무하는 직원 수가 3명 이상인 부서만 출력해주세요.
        select department, count(department)
        from tb_employees
        group by department
        having count(department)>=3;
        
        -- 문제 5.
        -- 각 부서별 평균 급여와 직원 수를 출력해주세요.
        select department, round(avg(salary)),count(department)
        from tb_employees
        group by department;
        728x90
        반응형

        'MySQL' 카테고리의 다른 글

        [MySQL] 29. SQL 쿼리의 일반적인 작동 순서 (2)  (0) 2024.06.10
        [MySQL] 28. SQL 쿼리의 일반적인 처리 순서 (1)  (1) 2024.06.10
        [MySQL] 26. GROUP BY와 HAVING 절  (0) 2024.06.10
        [MySQL] 1일 1쿼리 (3) : 함수 응용하기  (0) 2024.06.07
        [MySQL] 25. 예제 코드: 논리 및 조건 함수  (0) 2024.06.07
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바