데이터베이스 일반컴퓨터활용능력 1급 · 2011년10월16일 · 42/60
42.다음 중 [회원] 테이블에 대한 다음 SQL문을 수행했을 때 출력 결과로 옳은 것은? (단, 성명 필드는 빈문자열 허용이 예로 지정되어있으며 필드 값이 <null>로 표시된 것은 문자열이 아닌 <null>인 상태를 의미한다.)

1
4
2
3정답
3
2
4
1
해설
COUNT는 공백(NULL)은 셀 수 없기 때문에 '이' '김' '이' 이렇게 성명이 3개입니다. 이때 DISTINCT를 이용하여 중복을 제거하여도 이때 중복제거는 숫자 3에 대해서 시행되므로 의미가 없습니다. 위 문제에서는 SELECT DISTINCT COUNT(성명) FROM 회원입니다. 즉 위 문제에서는 COUNT 함수에서 이미 숫자 3을 구한 다음 중복제거(DISTINCT)를 하므로 숫자 3에 대해서 중복 제거가 이루어 지므로 결과는 그대로 3이 됩니다. 조금 다른 문장으로 고치자면 SELECT COUNT(DISTINCT 성명) FROM 회원로 고칠수 있습니다. 이경우 "DISTINCT 성명"은 NULL값을 제외한 이, 김, 이 3개의 데이터에서 '이'가 중복이 되므로 중복이 제거되면 결과적으로 '이', '김' 이렇게 2개의 데이터가 남게되며 이를 COUNT 할경우 숫자 2가 나타나게 됩니다.