코딩 테스트에서 자주 나오는 SQL 문제이다.
생각보다 간단해서 금방 해결될줄 알았지만.... 데이터가 없는 경우 로우는 포함되지 않는 결과값이 나왔다.
null일 경우 0 처리를 하기 위해서는
서브 쿼리에서 COUNT를 구하는 작업을 선작업 후, 조인을 걸어야 된다. 그런 후 IFNULL 함수를 사용해서 0 처리를 하면 결과값이 잘 나온다.
참고 링크 : https://blogger.pe.kr/231
공유하기 게시글 관리 저작자표시 '데이터베이스' 카테고리의 다른 글MySQL rank 함수 (0)2020.08.04ERD 관계 해석해보기 (0)2019.06.16식별관계, 비식별관계 (0)2019.05.02Mysql 5.7 이후 버전 비밀번호 변경 방법 (0)2018.12.24데이터베이스 릴레이션 키 정리 (0)2018.11.30오라클에서 날짜별로 건수를 집계하면 존재하는 날짜만 조회되고 존재하지 않는 날짜는 표시되지 않는다. 상황에 따라서 건수가 존재하는 않는 날짜도 "0"으로 조회 되어야 할 상황이 있다.
가상의 날짜뷰를 만들어서 아우터 조인을 하면 해당 날짜가 데이터에 존재하지 않는 날짜도 표시가 가능하다. 필요에 따라서 이런 케이스가 많다면 물리적인 테이블을 생성해 놓고 사용하는 방법도 있다. COUNT 함수 예시문법 COUNT (*) 파라미터 expr 어떤 식 열 이름 리턴 그룹의 레코드 건수 행수를 돌려 보낸다. 조건 SQL에서만 사용 가능. (PL/SQL 등) 내용 COUNT 함수에 별표 (*)를 사용하면 그룹의 모든 레코드 수를 돌린다. 많은 경우 GROUP BY 절 을 사용하지 않고 전체 행수를 취득하는 경우가 많은데, 그룹 단위의 행수를 구하는 것도 가능하다. COUNT의 특징적인 사용 방법은 그룹화 된 그룹 수를 결정하는데 COUNT (COUNT (*))과 중첩하여 사용할 수도 있다. 주의 COUNT 함수 식을 지정했을 경우, 식의 값이 NULL 값 의 경우 "정의되지 않음"을 나타낸다. "정의되지 않음"은 존재하지 않는 것으로 다루어진다. 그러나 COUNT 함수는 NULL을 건수에 포함하는 데 특별한 별표 (*)를 사용하는 구문이 준비되어 있으며 NULL을 포함하여 행수를 취득 할 수 있다.
예시namedeptsalaryA관리부300,000B관리부400,000C개발부500,000D개발부500,000E개발부200,000F개발부NULL COUNT (*)와 COUNT ( expr )와 COUNT ( DISTINCT expr )의 차이. namedeptsalaryCOUNT (*)COUNT (salary)COUNT(distinct salary)A관리부300,000111B관리부400,000222C개발부500,000333D개발부500,00044E개발부200,000554F개발부NULL6--결과--654부문(dept) 별로 구하게 된다면 건수는
식을 사용하여 NULL로 변환한 경우 : 급여가 500,000 의 것은 건수에 포함시키지 않는다.
부문별로 급여가 200,000 이하의 수를 카운트하는 예시
부문별로 급여가 200,000 엔 이하의 수를 카운트하는 (그 2)
조건별로 계산하는 예제
조건별로 계산 2 (COUNTIF 바람)
카운트 함수의 계산 = COUNT (COUNT (*)) |