You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP查询数据库国家数据如何按国家分组统计对应出现次数

你要的分组统计效果完全可以通过GROUP BY语句配合聚合函数COUNT()实现,直接在数据库层面计算统计结果,比全量查数据后在PHP侧遍历统计效率更高。

方案1(推荐,数据库层面处理)

修改SQL语句,用GROUP BY country对国家字段分组,用COUNT(*)统计每组的记录数:

$uid = '21';
$select = $dbh->prepare("SELECT `country`, COUNT(*) AS `country_count` FROM `reports` WHERE `profileuid` = ? GROUP BY `country`");
$select->bindParam(1, $uid, PDO::PARAM_STR);
$select->execute();

foreach($select as $row){
    echo $row['country'] . ' ' . $row['country_count'] . PHP_EOL;
}

如果需要按出现次数排序,可以在GROUP BY后追加排序规则,比如按次数从高到低排序就加ORDER BY country_count DESC。

方案2(PHP层面处理,适合需要同时用到全量记录其他字段的场景)

如果你的业务逻辑需要先查询所有匹配记录做其他处理,也可以在PHP侧遍历累计计数:

$uid = '21';
$select = $dbh->prepare("SELECT * FROM `reports` WHERE `profileuid` = ?");
$select->bindParam(1,$uid, PDO::PARAM_STR);
$select->execute();

$countryCount = [];
foreach($select as $row){
    $country = $row['country'];
    $countryCount[$country] = isset($countryCount[$country]) ? $countryCount[$country] + 1 : 1;
    // 这里可以继续写其他用到$row其他字段的业务逻辑
}

// 输出统计结果
foreach ($countryCount as $country => $count) {
    echo $country . ' ' . $count . PHP_EOL;
}

内容的提问来源于stack exchange,提问作者Lewis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:09:04