sql count(*) 질문드립니다.
본문
select count(*) as cnt from g5_ksy_0 where id='123' group by sy_date;
으로 했을때 cnt 값이 안나오는데
select count(*) as cnt from g5_ksy_0 where id='123';
으로 했을때는 cnt 값이 나옵니다.
그럼 뭐를 추가해야 첫번째 sql문에서 cnt값이 나오나요?
답변 3
group by sy_date group by 부분 추가 되면 해당 컬럼명이 선언이 되어야 구분이 되는건데요
group by 처리하게 되면 cnt 값이 여러개 나오게 될겁니다.
select sy_date,count(*) as cnt from g5_ksy_0 where id='123' group by sy_date;
이런식으로 선언이 되면 확인이 됩니다.
이것은
해당 db 테이블의 필드와 레코드값을 알아야 확인이 되겠네요.
위 sql구문으로 실제 값이 0일 수 있기 때문이기도 하고요...
GROUP BY 구문은
특정컬럼을 기준점으로 동일한것을 묶을때(카운트 등) 사용합니다.
sy_date 가 일자이면 일자를 기준으로 동일일자의 레코드수를 카운트하고
다른일자를 또 카운트하게 되니
위의 두번째 구문의 결과가 맞습니다.
전체 테이블을 대상으로 하려면 goup by 를 제거하고 카운트를 해야하고
where 절의 내용은 추출할 대상을 필터링하는 개념이라고 보시면됩니다.
답변을 작성하시기 전에 로그인 해주세요.