MariaDB分组统计行数与求和及PHP解析技术咨询
分组统计SQL实现及PHP解析方案
核心SQL查询语句
要实现按column1分组统计行数和column2总和,单条SQL就能搞定,用GROUP BY配合聚合函数即可:
SELECT column1, COUNT(*) AS row_count, SUM(column2) AS total_sum FROM your_table_name -- 替换成你的实际表名 GROUP BY column1;
针对你的测试数据,执行后会返回:
| column1 | row_count | total_sum |
|---|---|---|
| aa | 2 | 10 |
| bb | 3 | 16 |
| cc | 2 | 6 |
聚合函数说明(解决你的困惑)
COUNT(*):统计每个分组内的所有行数,不管列值是否为空,这里用来统计每个column1对应的记录数SUM(column2):计算每个分组内column2的数值总和,自动忽略NULL值(如果有的话)- 补充你提到的其他函数:
MAX(column2):取分组内column2的最大值(比如bb组的MAX是8)COUNT(DISTINCT column2):统计分组内column2的不同值数量(比如aa组的结果是1,因为两个都是5)
PHP解析查询结果
用PDO(推荐,安全且灵活)或者mysqli都能解析结果,下面是PDO的示例:
<?php // 替换成你的数据库信息 $host = 'localhost'; $dbname = '你的数据库名'; $username = '你的用户名'; $password = '你的密码'; try { // 建立数据库连接 $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 执行统计查询 $sql = "SELECT column1, COUNT(*) AS row_count, SUM(column2) AS total_sum FROM your_table_name GROUP BY column1"; $stmt = $pdo->query($sql); // 获取关联数组格式的结果集 $stats = $stmt->fetchAll(PDO::FETCH_ASSOC); // 遍历处理结果 foreach ($stats as $item) { echo "分组:{$item['column1']},行数:{$item['row_count']},总和:{$item['total_sum']}<br>"; } } catch (PDOException $e) { die("查询出错:" . $e->getMessage()); } // 关闭连接(可选,脚本结束会自动释放) $pdo = null; ?>
如果习惯用mysqli,也可以用这段代码:
<?php $conn = mysqli_connect('localhost', '你的用户名', '你的密码', '你的数据库名'); if (!$conn) { die("连接失败:" . mysqli_connect_error()); } $sql = "SELECT column1, COUNT(*) AS row_count, SUM(column2) AS total_sum FROM your_table_name GROUP BY column1"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { while ($row = mysqli_fetch_assoc($result)) { echo "分组:{$row['column1']},行数:{$row['row_count']},总和:{$row['total_sum']}<br>"; } } else { echo "没有找到匹配的记录"; } mysqli_close($conn); ?>
内容的提问来源于stack exchange,提问作者Evo
相关产品推荐
相关产品推荐

