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
$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( 해당 컬럼)
답변을 작성하시기 전에 로그인 해주세요.