쿼리문에서 group by로 묶을때요~~
본문
$row = sql_query(" select AVG(wr_1) as avg, date from $aaa_table mb_id='$member[mb_id] group by wr_datetime ");
상기와 같이 날짜로 그룹바이 해서 묶어서 리스트로 출력할때요~~
sum은 더해서 나오는거 알겠는데요..
date는 그룹에서 최고 마지막껄가져오나요? 아님 최초의 것을 가져오나요?
!-->답변 6
select AVG(wr_1) as avg, substr(wr_datetime , 1, 10) date from $aaa_table mb_id='$member[mb_id] group by date
이렇게 하시면 될 것 같습니다.
wr_datetime 은 년월일시분초 까지 기록됩니다.
그러므로 그룹으로 묶으면 같은 시각의 초를 집계하는데 이건 효율적이지도 않지만 원하는 결과를 얻지 못 하십니다.
그리고 쿼리에 where 절이 없네요?
같은 날짜까지만 그룹화 하시려면
where mb_id = '$member[mb_id]' 하시고
group by substring(wr_datetime , 1, 10) 하시면 같은날짜 까지만 그룹화 합니다.
group by wr_datetime 를 group by date 로 바꿔보세요.
유찬아빠님 말씀대로 wr_datetime는 시간분초 까지 들어가서 group by로 묶을 수 없습니다.
위와 같이 하시면
초단위로 묶입니다.
group by date(wr_datetime)
으로 하시면 일별로 묶입니다.
date라는 컬럼이 있다면
date로 묶으시던지
없다면
컬럼에서도
select .... , date(wr_datetime) as date
로 표기하셔야죠
답변주시분 대단히 감사드립니다.
질문에 혼동이 잇었나 보네요..
date는 임의로 그냥 쓰다가 넣은건데요..ㅠㅠ
단지 궁금한건 그룹으로 묶엇을때 그 그룹안의 일정 필드의 값들이 달랐을때
$result = sql_query(" select AVG(wr_1) as avg, aaa from $aaa_table where mb_id='$member[mb_id] group by wr_datetime ");
while($row=sql_fetch_array($result)){
echo $row['avg'];
echo $row['aaa'];
}
이럴경우..
$row['aaa']; 값을 가져올때 그룹으로 묶여있으니 그 group의 처음값인지 아니면 최종값인지 그게 알고 싶은 거 예요..ㅠㅠㅠ
!-->