본문으로 바로 가기

프로그래밍기능사 필기 · SQL 활용 과목

AI 작성 · 운영진 검수 전

프로그래밍기능사 SQL 응용 핵심정리

중요도
★★★★☆ (4 / 5)
출제 비중
SQL 활용 15문항 중 약 4문항 (25%)

집계 함수와 GROUP BY·HAVING, 조인, 하위 질의, 뷰와 인덱스를 다룹니다.

📖 SQL 응용 개념 정리 보기 →

SQL 응용, 이것만은 꼭 외우세요

  • HAVING 은 GROUP BY 로 묶은 그룹에 조건을 겁니다.
  • COUNT(*) 는 NULL 이 있는 행도 셉니다.

SQL 응용 대표 문제 5개

예상문제검수 완료SQL 활용 › SQL 응용★★★★☆

문제 1. GROUP BY 로 묶은 그룹에 조건을 걸 때 쓰는 절은?

  1. ① HAVING
  2. ② DISTINCT
  3. ③ WHERE
  4. ④ ORDER BY
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ① HAVING

핵심: HAVING 은 그룹에, WHERE 는 개별 행에 조건을 건다

GROUP BY 로 묶은 뒤 'SUM(급여) >= 700' 처럼 그룹 단위로 조건을 걸 때는 HAVING 을 씁니다.

틀린 선지

  • ② DISTINCT: DISTINCT 는 중복된 값을 하나만 남깁니다.
  • ③ WHERE: WHERE 는 그룹으로 묶기 전에 개별 행을 거릅니다.
  • ④ ORDER BY: ORDER BY 는 결과를 정렬합니다.
예상문제검수 완료SQL 활용 › SQL 응용★★★★☆

문제 2. [성적 테이블] 번호 | 점수 1 | 80 2 | NULL 3 | 90 4 | NULL 5 | 70 위 테이블에 다음 SQL 을 실행한 결과는? SELECT COUNT(*), COUNT(점수) FROM 성적;

  1. ① 5, 5
  2. ② 3, 3
  3. ③ 5, 3
  4. ④ 3, 5
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ③ 5, 3

핵심: COUNT(*) 는 모든 행, COUNT(열) 은 NULL 을 빼고 센다

  1. COUNT(*): 행 전체 개수 → 5
  2. COUNT(점수): 점수가 NULL 이 아닌 행 → 80, 90, 70 → 3
  3. 결과: 5, 3

틀린 선지

  • ① 5, 5: COUNT(점수) 는 NULL 을 빼고 셉니다.
  • ② 3, 3: COUNT(*) 는 NULL 이 있는 행도 셉니다.
  • ④ 3, 5: 두 값이 바뀌었습니다.
예상문제검수 완료SQL 활용 › SQL 응용★★★★☆

문제 3. 하나 이상의 테이블에서 필요한 부분만 뽑아 만든 가상 테이블은?

  1. ① 뷰(VIEW)
  2. ② 인덱스(INDEX)
  3. ③ 트리거(TRIGGER)
  4. ④ 시퀀스(SEQUENCE)
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ① 뷰(VIEW)

핵심: 뷰는 실제 데이터가 없는 가상 테이블

뷰는 실제로 데이터를 따로 저장하지 않고, 원래 테이블에서 필요한 부분만 보여 주는 가상 테이블입니다. 보여 줄 열을 제한해 보안에도 쓰입니다.

틀린 선지

  • ② 인덱스(INDEX): 인덱스는 검색을 빠르게 하려고 만드는 색인입니다.
  • ③ 트리거(TRIGGER): 트리거는 특정 사건이 일어나면 자동으로 실행되는 동작입니다.
  • ④ 시퀀스(SEQUENCE): 시퀀스는 번호를 차례로 만들어 주는 객체입니다.
예상문제검수 완료SQL 활용 › SQL 응용★★★★☆

문제 4. [직원 테이블] 이름 | 부서 | 급여 김 | 영업 | 300 이 | 개발 | 400 박 | 영업 | 250 최 | 개발 | 350 위 테이블에 다음 SQL 을 실행한 결과는? SELECT 부서, SUM(급여) FROM 직원 GROUP BY 부서 HAVING SUM(급여) >= 700;

  1. ① 결과 없음
  2. ② 개발 750, 영업 550
  3. ③ 영업 550
  4. ④ 개발 750
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ④ 개발 750

핵심: GROUP BY 로 묶고 HAVING 으로 그룹을 거른다

  1. 부서별로 묶어 합계 계산
  2. 영업: 300 + 250 = 550
  3. 개발: 400 + 350 = 750
  4. HAVING SUM(급여) >= 700 → 개발만 남음
  5. 결과: 개발 750

틀린 선지

  • ① 결과 없음: 개발 부서의 합계 750 이 조건을 만족합니다.
  • ② 개발 750, 영업 550: HAVING 조건에 따라 합계가 700 이상인 그룹만 남습니다.
  • ③ 영업 550: 영업의 합계 550 은 700 보다 작습니다.
예상문제검수 완료SQL 활용 › SQL 응용★★★★☆

문제 5. [직원 테이블] 이름 | 부서 | 급여 김 | 영업 | 300 이 | 개발 | 400 박 | 영업 | 250 최 | 개발 | 350 위 테이블에 다음 SQL 을 실행한 결과로 나오는 이름은? SELECT 이름 FROM 직원 WHERE 급여 > (SELECT AVG(급여) FROM 직원);

  1. ① 이, 최
  2. ② 이
  3. ③ 김, 박
  4. ④ 김, 이, 최
▼ 정답과 해설 보기▲ 정답과 해설 접기

정답: ① 이, 최

핵심: 하위 질의 결과(평균)를 먼저 구한 뒤 비교한다

괄호 안의 하위 질의를 먼저 계산합니다.

  1. 평균 급여: (300 + 400 + 250 + 350) ÷ 4 = 1300 ÷ 4 = 325
  2. 325 보다 큰 직원: 이(400), 최(350)
  3. 결과: 이, 최

틀린 선지

  • ② 이: 최의 급여 350 도 평균 325 보다 큽니다.
  • ③ 김, 박: 평균보다 작은 직원입니다.
  • ④ 김, 이, 최: 평균이 325 이므로 300 인 김은 평균보다 작습니다.

직접 풀어서 확인해 보세요.