https://kdhyo98.tistory.com/26
('~이다'로 끝내는 것은 글을 편하게 쓰기 위해서이니 양해바랍니다.)
이 글은 postgresql 문법으로 작성되었지만 다른 sql에서도 주의해야 할 사항이다.
회사에서 COUNT를 사용하다가 생각했던 값과 다르게 나오는 것을 발견되었다.
과장님께서 간단하게 해결책을 제시해주셨고, 그 방법을 기록할 생각이다.
COUNT 란 해당하는 조건(없어도 가능)에 원하는 컬럼 값이 존재하는지 확인하여
존재하는 것의 총 개수를 확인하는 문법이다.
위 테이블에서 contents에 내용이 있는 것들의 개수를 알아보기 위해 COUNT를 사용한다.
내가 원하는 답은 값이 들어있는 것의 합인 '6'을 원한다.
결과는 생각과는 다르게 8이라는 결과가 나오게 되었다.
그 이유는 COUNT 가 NULL이 아닌 컬럼을 모두 합하기 때문이다.
결국 빈 값이 들어가 있는 8, 10 컬럼들도 COUNT 에 포함이 되어 버린다.
우리는 간단하게 SUM을 사용하여 COUNT에서 원하는 기능을 사용할 수 있다.
조건문
case when 조건문 then 일치 시 else 아닐 시 end
컬럼이 null일 시 대체 값 지시
coalesce(컬럼, 0)
컬럼이 null일 시 0을 반환 null이 아니면 컬럼 반환
문자열의 문자 수를 반환
char_length(contents)
이 외에도
bit_length() - 비트 단위로 측정된 문자열의 길이 반환
length() = octet_length() - 바이트 단위로 측정된 문자열의 길이 반환
등이 존재한다.
count를 사용하게 되면 '' 처럼 빈 값도 포함시키기 때문에
원하는 값과 다른 값이 나올 수 있어 주의를 기울여서 사용해야 한다.
다른 방식으로 위와 같은 방식이 있다는 것이니 다른 방식을 찾아보는 것도
좋은 공부가 될 것 같다.
null을 넣어도 0보다 크지 않기 때문에 coalesce 는 사용을 안 해도 될 것 같다는 생각이 들었다.
WHERE을 통해서 COUNT를 사용해도 될 것 같다.
- 위에 있는 함수들은 아주 간략하게 설명한 것이기 때문에
더 다양한 방식으로 사용도 가능하기에 찾아서 공부하면 도움이 될 것 같다.