컬럼의 값이 특정 개수 이상인 게시물들의 합을 구하고 싶습니다.

컬럼의 값이 특정 개수 이상인 게시물들의 합을 구하고 싶습니다.

QA

컬럼의 값이 특정 개수 이상인 게시물들의 합을 구하고 싶습니다.

본문

안녕하세요~

계속 생각해봐도 제 잛은 지식으로 답이 안나와서 질문드립니다.ㅠㅠ

 

while 문으로 count 해서 값이 나온 결과물의 값이 n개 이상인 결과의 수를 구할 수 있는 방법이 있을까요?

 


<? 
    $sql = " select wr_subject from 테이블A where wr_datetime like '2022-01%' and wr_17 = '사과' order by wr_datetime asc limit 100";
    $result = sql_query($sql);    
    
    while($row = sql_fetch_array($result)) {        
?>    
<?
    $f_subject = $row['wr_subject'];    
    
    $a_sql = "SELECT COUNT(wr_subject) as cnt FROM 테이블B WHERE wr_subject = '$f_subject' and wr_datetime < '2022-01-31 23:59:59' group by wr_subject having COUNT(wr_subject) > 2 ";
    $row = sql_fetch($a_sql);
    $same_count = $row[cnt];
?>   
    <tr>
        <td> </td>
        <td><? echo $f_subject ?></td>
        <td><? echo $same_count ?></td>
    </tr>
<? } ?>

위와 같은 코드를 짰는데요. 실행을 하면 결과 값이

 

서울 

인천

경기도 4

강원도 10

부산 5

 

같이 위처럼 출력이 되는데요.

 

5개의 데이터 중 [값이 2이상]인 결과값이 있는 데이터가 3개니까

----------------------

값: 3

----------------------

을 출력하는 방법을 알고 싶은데 도저히 생각이 안나서요. 혹시 방법이 있을까요?~ㅠㅠ

 

이 질문에 댓글 쓰기 :

답변 2


<?
    $sql = "SELECT wr_subject FROM 테이블A WHERE wr_datetime LIKE '2022-01%' AND wr_17 = '사과' ORDER BY wr_datetime ASC LIMIT 100";
    $result = sql_query($sql);
    
    $total_count = 0; // Variable to store the total count
    
    while($row = sql_fetch_array($result)) {        
    
        $f_subject = $row['wr_subject'];    
        
        $a_sql = "SELECT COUNT(wr_subject) AS cnt FROM 테이블B WHERE wr_subject = '$f_subject' AND wr_datetime < '2022-01-31 23:59:59' GROUP BY wr_subject HAVING COUNT(wr_subject) > 2 ";
        $row = sql_fetch($a_sql);
        $same_count = $row['cnt'];
        
        if ($same_count > 2) {
            $total_count++; // Increment the total count if same_count is greater than 2
        }
?>   
        <tr>
            <td> </td>
            <td><? echo $f_subject ?></td>
            <td><? echo $same_count ?></td>
        </tr>
<? } ?>
----------------------
값: <? echo $total_count ?>
----------------------

$same_count = $row[cnt];

//추가

if( $same_count <=2) continue;

?>   

둘째 SQL 날짜 조건이 좀 이상해 보이는데
일단 넘어가고

SELECT b.wr_duject, COUNT(*) AS cnt FROM
테이블B b inner join  테이블A a
on b.wr_subject=a.subject
And a.wr_datetime >='2022-01-01'
And a.wr_datetime <='2022-01-31 23:59:59'
AND a.wr_17 = '사과'
Where b.wr_datetime < '2022-01-31 23:59:59'
GROUP BY b.wr_subject HAVING cnt > 2

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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