DB count 특정 값을 갖는 항목 갯수 합 구하기 질문드립니다.

DB count 특정 값을 갖는 항목 갯수 합 구하기 질문드립니다.

QA

DB count 특정 값을 갖는 항목 갯수 합 구하기 질문드립니다.

본문

안녕하세요.

고수님들께 질의를 드리고 배움을 얻고자 질의드립니다.

 

질의 : 특정 항목을 컬럼 값으로 갖고 있는 DB 항목의 합을 구하고 싶습니다.

         php 내에서 사용 예정입니다. DB는 아래와 같이 연결 되어 있습니다.

 

+ -------- + ------ + ----------- +

┃       테이블명 : SPORT        ┃

+ -------- + ------ + ----------- +

기타1기타2특정항목 ┃

+ -------- + ------ + ----------- +

┃  abc1  ┃  abc2 ┃    축구   ┃

┃  abc3  ┃  abc4 ┃    축구   ┃

┃  abc5  ┃  abc6 ┃    농구   ┃

┃  abc7  ┃  abc8 ┃    야구   ┃

┃  abc9  ┃  abc0 ┃    농구   ┃

+ -------- + ------ + ----------- +

 

이때 축구를 갖는 항목 개수의 합을 '2' 로 얻고자 하고,

아래처럼 항목을 기입하여 항목 개수의 합을 얻을수 있게 하고 싶습니다.

 

 

변수['축구'] = 2

변수['농구'] = 2

변수['야구'] = 1

 

 

고수님들의 조언 여쭙습니다.

감사드립니다 고수님들.

이 질문에 댓글 쓰기 :

답변 4


<?php 
$sql = "select 특정항목, count(*) cnt  from SPORT 
           group by 특정항목";
$result = mysqli_query($sql);
while ($row = mysqli_fetch_array($result)) {
    echo $row['특정항목']." : ".$row['cnt']."<br>";
}
 
 

로 하시면됩니다.

많이 알지 못하여 질문 드리는 것도 죄송하네요 ...
원하는 항목을 포함하는 값의 합을 구하는 형태로 사용하고 싶은데요.

<?php echo $row['축구'] ?> 이렇게 찍었을 때 (축구 항목을 갖는 합) 2,
<?php echo $row['농구'] ?> 이렇게 찍었을 때 (농구 항목을 갖는 합) 2,

등등.. 이렇게 나오게 하려면 어떻게 하면 좋을지 질문드립니다 ..

<?php
$sql = "select 특정항목, count(*) cnt  from SPORT
          group by 특정항목";
$result = mysqli_query($sql);

$cnt_by= array()

while ($row = mysqli_fetch_array($result)) {
    $cnt_by[ $row['특정항목'] ]= $row['cnt'];
}

echo $cnt_by["축구"];
해 보세요.


<?php
$conn = mysqli_connect("host", "user", "password", "database");
$result = mysqli_query($conn, "SELECT COUNT(*) FROM SPORT WHERE 특정항목 = '축구'");
$row = mysqli_fetch_assoc($result);
$sum_soccer = $row["COUNT(*)"];
$result = mysqli_query($conn, "SELECT COUNT(*) FROM SPORT WHERE 특정항목 = '농구'");
$row = mysqli_fetch_assoc($result);
$sum_basketball = $row["COUNT(*)"];
$result = mysqli_query($conn, "SELECT COUNT(*) FROM SPORT WHERE 특정항목 = '야구'");
$row = mysqli_fetch_assoc($result);
$sum_baseball = $row["COUNT(*)"];
$data = array(
    "축구" => $sum_soccer,
    "농구" => $sum_basketball,
    "야구" => $sum_baseball
);
print_r($data);
mysqli_close($conn);
 
// 결과
// Array ( [축구] => 2 [농구] => 2 [야구] => 1 )
?>

<?php
$tbl = [
    ['기타1' => 'abc1', '기타2' => 'abc2', '특정항목' => '축구'],
    ['기타1' => 'abc3', '기타2' => 'abc4', '특정항목' => '축구'],
    ['기타1' => 'abc5', '기타2' => 'abc6', '특정항목' => '농구'],
    ['기타1' => 'abc7', '기타2' => 'abc8', '특정항목' => '야구'],
    ['기타1' => 'abc9', '기타2' => 'abc0', '특정항목' => '농구']
];
 
$grp = [];
foreach ($tbl as $row) { // while ($row = sql_fetch_array($result)) { ...
    $grp_k = $row['특정항목'];
    if (isset($grp[$grp_k]) != true) {
        $grp[$grp_k] = 0;
    }
    $grp[$grp_k]++;
}
 
print('<pre>');
print_r($grp);
print('</pre>');
?>

갯수가 필요하시면

count(*)

합이 필요하시면

sum( 해당 컬럼)

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

회원로그인

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