프로그래밍기능사 필기 · 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 로 묶은 그룹에 조건을 걸 때 쓰는 절은?
- ① HAVING
- ② DISTINCT
- ③ WHERE
- ④ 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 성적;
- ① 5, 5
- ② 3, 3
- ③ 5, 3
- ④ 3, 5
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ③ 5, 3
핵심: COUNT(*) 는 모든 행, COUNT(열) 은 NULL 을 빼고 센다
- COUNT(*): 행 전체 개수 → 5
- COUNT(점수): 점수가 NULL 이 아닌 행 → 80, 90, 70 → 3
- 결과: 5, 3
틀린 선지
- ① 5, 5: COUNT(점수) 는 NULL 을 빼고 셉니다.
- ② 3, 3: COUNT(*) 는 NULL 이 있는 행도 셉니다.
- ④ 3, 5: 두 값이 바뀌었습니다.
예상문제검수 완료SQL 활용 › SQL 응용★★★★☆
문제 3. 하나 이상의 테이블에서 필요한 부분만 뽑아 만든 가상 테이블은?
- ① 뷰(VIEW)
- ② 인덱스(INDEX)
- ③ 트리거(TRIGGER)
- ④ 시퀀스(SEQUENCE)
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ① 뷰(VIEW)
핵심: 뷰는 실제 데이터가 없는 가상 테이블
뷰는 실제로 데이터를 따로 저장하지 않고, 원래 테이블에서 필요한 부분만 보여 주는 가상 테이블입니다. 보여 줄 열을 제한해 보안에도 쓰입니다.
틀린 선지
- ② 인덱스(INDEX): 인덱스는 검색을 빠르게 하려고 만드는 색인입니다.
- ③ 트리거(TRIGGER): 트리거는 특정 사건이 일어나면 자동으로 실행되는 동작입니다.
- ④ 시퀀스(SEQUENCE): 시퀀스는 번호를 차례로 만들어 주는 객체입니다.
예상문제검수 완료SQL 활용 › SQL 응용★★★★☆
문제 4. [직원 테이블] 이름 | 부서 | 급여 김 | 영업 | 300 이 | 개발 | 400 박 | 영업 | 250 최 | 개발 | 350 위 테이블에 다음 SQL 을 실행한 결과는? SELECT 부서, SUM(급여) FROM 직원 GROUP BY 부서 HAVING SUM(급여) >= 700;
- ① 결과 없음
- ② 개발 750, 영업 550
- ③ 영업 550
- ④ 개발 750
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ④ 개발 750
핵심: GROUP BY 로 묶고 HAVING 으로 그룹을 거른다
- 부서별로 묶어 합계 계산
- 영업: 300 + 250 = 550
- 개발: 400 + 350 = 750
- HAVING SUM(급여) >= 700 → 개발만 남음
- 결과: 개발 750
틀린 선지
- ① 결과 없음: 개발 부서의 합계 750 이 조건을 만족합니다.
- ② 개발 750, 영업 550: HAVING 조건에 따라 합계가 700 이상인 그룹만 남습니다.
- ③ 영업 550: 영업의 합계 550 은 700 보다 작습니다.
예상문제검수 완료SQL 활용 › SQL 응용★★★★☆
문제 5. [직원 테이블] 이름 | 부서 | 급여 김 | 영업 | 300 이 | 개발 | 400 박 | 영업 | 250 최 | 개발 | 350 위 테이블에 다음 SQL 을 실행한 결과로 나오는 이름은? SELECT 이름 FROM 직원 WHERE 급여 > (SELECT AVG(급여) FROM 직원);
- ① 이, 최
- ② 이
- ③ 김, 박
- ④ 김, 이, 최
▼ 정답과 해설 보기▲ 정답과 해설 접기
정답: ① 이, 최
핵심: 하위 질의 결과(평균)를 먼저 구한 뒤 비교한다
괄호 안의 하위 질의를 먼저 계산합니다.
- 평균 급여: (300 + 400 + 250 + 350) ÷ 4 = 1300 ÷ 4 = 325
- 325 보다 큰 직원: 이(400), 최(350)
- 결과: 이, 최
틀린 선지
- ② 이: 최의 급여 350 도 평균 325 보다 큽니다.
- ③ 김, 박: 평균보다 작은 직원입니다.
- ④ 김, 이, 최: 평균이 325 이므로 300 인 김은 평균보다 작습니다.
직접 풀어서 확인해 보세요.