테스트 사이트 - 개발 중인 베타 버전입니다

sql count(*) 질문드립니다. 채택완료

cho개발 5년 전 조회 2,799

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개

채택된 답변
+20 포인트
플라이
5년 전

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;

 

이런식으로 선언이 되면 확인이 됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

c
cho개발
5년 전
똑같이 해봤는데 그래도 카운터 값은 안나와요..ㅠㅠ
c
cho개발
5년 전
소스 응용해서
select count(s.sy_date) as cnt from (select sy_date,count(sy_date) as cnt from g5_ksy_0 where id='123' group by sy_date) as s; 으로 하니깐 됐어요 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

플래토
5년 전

GROUP BY 구문은

 

특정컬럼을 기준점으로 동일한것을 묶을때(카운트 등) 사용합니다.

 

sy_date 가 일자이면 일자를 기준으로 동일일자의 레코드수를 카운트하고

다른일자를 또 카운트하게 되니

 

위의 두번째 구문의 결과가 맞습니다.

 

전체 테이블을 대상으로 하려면 goup by 를 제거하고 카운트를 해야하고

 

where 절의 내용은 추출할 대상을 필터링하는 개념이라고 보시면됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

c
cho개발
5년 전
감사합니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

이것은 

해당 db 테이블의 필드와 레코드값을 알아야 확인이 되겠네요.

위 sql구문으로 실제 값이 0일 수 있기 때문이기도 하고요...

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인