정보처리기사 필기

시험 직전 요약장

판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.

이론 목록

SELECT 처리 순서·조건·NULL·집계·정렬

원래 이론 →

판단 기준

WHERE는 FROM과 JOIN이 만든 각 행에 검색 조건을 적용한다. 조건 결과가 TRUE인 행만 다음 단계로 전달되고, FALSE와 UNKNOWN인 행은 제외된다.

조건 종류대표 구문의미주의점
비교=, <>, <, <=, >, >=두 값을 비교NULL과 일반 비교하면 UNKNOWN
범위BETWEEN a AND ba 이상 b 이하양 끝값을 모두 포함
목록IN (값1, 값2, ...)목록 중 하나와 일치NULL이 섞인 부정 조건에 주의
패턴LIKE문자열 패턴과 일치%는 0자 이상, _는 정확히 1자
NULL 검사IS NULL, IS NOT NULL값의 부재 여부를 검사= NULL을 사용하지 않음
논리 결합NOT, AND, OR조건을 부정·결합괄호로 업무 의도를 명시
이 부분의 원문 →

헷갈리는 개념

구분필터 대상처리 시점집계 함수 조건
WHERE원본의 개별 행그룹화 전같은 질의 블록에서 직접 사용하지 않음
HAVINGGROUP BY가 만든 그룹그룹화·집계 후COUNT(*), AVG(salary) 등 사용 가능
SQL
SELECT department,
       COUNT(*) AS employee_count
FROM employee
WHERE status = 'ACTIVE'
GROUP BY department
HAVING COUNT(*) >= 2;

WHERE status = 'ACTIVE'는 재직 중인 행만 그룹화 대상으로 남긴다. HAVING COUNT(*) >= 2는 그 결과로 만들어진 그룹 중 인원이 2명 이상인 부서만 남긴다. HAVING이 있으면 GROUP BY가 없더라도 선택된 전체 행을 하나의 그룹으로 취급하는 그룹 질의가 될 수 있다. 그러나 행 조건을 대신하는 절로 남용하면 의미가 흐려진다.

이 부분의 원문 →

대표 계산·예제

ROLLUP(a,b,c)가 만드는 집합은 (a,b,c), (a,b), (a), ()다. 앞에서부터의 계층만 만들기 때문에 (b,c) 소계는 없다. CUBE(a,b,c)는 이 집합뿐 아니라 (a,c), (b,c), (b), (c)도 포함하여 8개의 그룹 기준 집합을 만든다. GROUPING SETS는 명시한 집합만 만들며, ()를 적지 않았다면 총계가 자동으로 추가되는 것은 아니다.

아래 매출에서 ROLLUP(지역,상품)을 계산한다고 하자.

지역상품금액
동부A20
동부B30
서부A40

지역·상품 집계 3행, 지역별 소계 2행, 전체 총계 1행으로 결과는 6행이다. 소계는 동부 50·서부 40, 총계는 90이다. 그룹 기준 집합 3개와 출력 행 6개는 다른 수다. 결과 순서는 ORDER BY 없이는 보장하지 않는다.

집계에서 생략한 열은 NULL로 표시될 수 있다. 원본 값 자체가 NULL인 그룹과 구별하려면 GROUPING(열)을 사용한다. 그 열이 집계 기준에서 생략된 행은 1, 실제 그룹 키로 참여한 행은 값이 NULL이어도 0이다. SQLite는 이러한 그룹 확장 구문을 직접 지원하지 않으므로, 이 개념을 SQLite의 실행 결과라고 혼동하지 않는다.

전체 맞춤새 창 보기
ROLLUP과 CUBE의 그룹 집합

ROLLUP과 CUBE의 그룹 집합

ROLLUP(A,B)는 (A,B), (A), ()이고 CUBE(A,B)는 여기에 (B)를 더한다. ()는 전체 합계다. 한 그룹 집합에서도 실제 키 값 수에 따라 여러 결과 행이 나온다. GROUPING은 집계 NULL과 실제 NULL을 구분한다.

이 부분의 원문 →

내 최근 연습 오답

현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.

학습 기록 →

오답 기록을 확인하고 있습니다.