2016-07-29 1 views
1

내 제목에 따르면 COUNT를 사용하여 쿼리를 실행하려고하는데 예상 한 결과가 아닙니다. 모든. 다음 쿼리를 실행했습니다 :내 테이블에는 열에 많은 값이 있지만 COUNT 쿼리를 실행하면 값이 많이 누락됩니다.

SELECT AdmissionReason FROM Episode 

결과가 70150 행입니다. 다음 쿼리를 실행하고 결과가 0입니다. 내가 NULL이있는 1000 개의 행이 있다는 사실을 알고 있기 때문에 이것은 불가능합니다.

SELECT COUNT(AdmissionReason) FROM Episode 
    WHERE AdmissionReason IS NULL; 

내가 여기서 뭔가를 누락 될 수 그러나 내가

0의 결과를 얻고, 나에게 AdmissionReason가 null의 모든 에피소드의 수를 줄이 쿼리를 기다리고 있었다?

+6

으로 시도합니다. 쿼리가 올바르게 작동하고 있습니다. 아마도 값은 빈 문자열'' ''또는''NULL' '이라는 단어입니다. –

+1

모든 [aggregate functions] ('COUNT (*)'를 제외하고)'NULL' 값은 무시됩니다. (https://msdn.microsoft.com/en-us/library/ms173454.aspx) 'COUNT (expression)'은'NULL'이 아닌 것만을 계산하지만 널값만을 선택합니다. –

답변

8

COUNT(SomeColumn)NULL으로 계산되지 않습니다. 그래서 COUNT(NULL's) = 0

당신은 AdmissionReason`은`NULL`입니다`에 행이 ​​없습니다

SELECT COUNT(*) 
FROM Episode 
WHERE AdmissionReason IS NULL; 

EXAMPLE

+0

나는 어리 석다. 좋은 캐치. –

+0

@GordonLinoff : [MSDN] (https://msdn.microsoft.com/en-us/library/ms173454.aspx)에서 COUNT **를 제외한 모든 집계 함수 **가 null 값을 무시한다고 말하는 이유는 무엇입니까? 좀 혼란 스럽네요, 그렇죠? –

+0

나는 count (*) 또는 count (1)가 null을 무시하지 않는다는 것을 의미한다고 확신한다. 그것은 혼란 스럽다. 그들은 올바른 상황에서 항상 NULL을 무시하지 않는 유일한 집계 함수라고 말할 수 있습니다. ;) –

관련 문제