group by count(*) 관련 채택완료

mysql 버전이 낮아서 서브쿼리에 제한이 있습니다.

select count(*) from 테이블 where 1 and wdate like '2022-01%' group by site_code, no

와같은 쿼리를 날렸을떄

아래와 같이 각각 카운팅되는데 제가 원하는것은 이 행에 갯수입니다.

5라는 값이 나왔으면 좋겠는데, 어떻게 쿼리를 만들수있을까요?

count(*)
2
1
8
15

11

답변 2개

채택된 답변
+20 포인트

mysql4버전대에 사용을 하시는군요..

이 버전대에 이게 먹힐지 모르겠지만

순번을 매겨서 마지막 순번을 취하면 원하시는 값을 뽑아내지 않을까 생각합니다.

Copy
set @num:=0;
SELECT @num:=@num+1 as rownum,count(*) from 테이블 where 1 and wdate like '2022-01%' 
group by site_code, NO ORDER BY rownum desc
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

답변 감사합니다.
생각보다 구현이 잘 안되서.. php 조합으로 그냥 표현했습니다.

$totalRecord = 0;
for($i=0; $i<$crow=mysql_fetch_row($cresult); $i++){
$totalRecord++;
}

그냥 for문에서 갯수를 다 더하는식으로 했는데, 개인적으로 sql은 sql로 끝내자는 마인드가
있어서, 추후에 더 좋은 방법있으면 댓글로 남겨보겠습니다.

4.0 버전 msyql 이라 답답합니다. ㅎㅎ

다시한번 답변 감사합니다.

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

select count( DISTINCT site_code, no) from 테이블 where 1 and wdate like '2022-01%'

4.0에서 지원할지 잘모르겠네요.

==

https://downloads.mysql.com/docs/refman-4.1-en.a4.pdf

COUNT(DISTINCT ...) [824] was added in MySQL 3.23.2.

가능하네요.

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

답변에 대한 댓글 1개

답변감사합니다.
저도 distinct 찾아보고 아차 싶었습니다...
진작 해볼껄하고..

추후 작업시 해보겠습니다.
감사합니다.

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

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

로그인
🐛 버그신고