서브쿼리 질문드립니다.

서브쿼리 질문드립니다.

QA

서브쿼리 질문드립니다.

본문

 
$avg_class_ea=200;   
$result=sql_fetch(" select SUM(tmp.level) as hab, COUNT(*) as cnt 
                         from 
                         (select level from $reservation 
                                  where mb_id='{$mb_id}' 
                                     and level<>'0' 
                                     and classdate<='$classdate' 
                                     order by classdate desc, classtime desc limit $avg_class_ea) as tmp"); 

    $myavg=round($result[hab]/$result[cnt]); //평균값계산

 

아주 기초적인 걸 질문드립니다...

 

평균값을 산출하는 수업관리 프로그램입니다. 참고로 레코드 1개가 수업1개입니다.

서브쿼리에서요..

내 수업(mb_id='{$mb_id}')

레코드 그리고 이미 평가된 것들(level<>'0')

지난 수업들(classdate<='$classdate' )을 조건을 주고요.

이걸 수업시간별로 최근것으로 정렬해서 200개를 ($avg_class_ea) 갖고와서 그 평균을 계산하는 쿼리입니다.

[질문요]

질문요지는 $avg_class_ea 값이 200개인데 200개가 안될 경우 level 값이 어떻게 나올까 그게 궁금합니다.

 

이 질문을 드리는 이유는

classdate와 classtime 는 최근걸로 sort시키고 있습니다.

소트시킨 결과 값에 leve 값이 있는게 있고 없을 수도 있거든요.

level 값을 합하고 갯수 카운트해서 (SUM(tmp.level) as hab, COUNT(*) as cnt)

$myavg 값을 계산하게 했거든요..

그런데

200개를 limit 하면 그 중 200개 레코드 모두 level 값이 있으면 좋겠는데 그 중에서 level 값이 없을 경우도 있거든요..

이럴경우 결과 값이 에러가날찌 아니면 계산이 되는지 알고 있습니다..ㅠㅠ 

 

데이터가 없어서 테스트를 못해 보기때문에..ㅠㅠ 쿼리문만 보고 알수 있으면 좀 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 1

평균이라면 avg() 함수를 쓰면 될 것 같구요.

level 값이 없어 계산에 포함 시키지 않으려면 조건을 줘서 쿼리 결과에 안나오게 하시면 됩니다.

 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,532 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT