考虑一个简单的查询:
SELECT id, date, hours FROM employees where id=10
以及以下结果集:
id | date | hours
---------------------
1 4-19-2012 4
1 4-19-2012 2.5
1 4-19-2012 1
1 4-20-2012 2
1 4-20-2012 3
我正在显示结果集的典型 HTML 表输出,但我想在该天结果下方的一行上显示每日总和。
+--------------------------------------+
| David | 4-19-2012 | 4 |
| | 4-19-2012 | 2.5 |
| | 4-19-2012 | 1 |
|--------------------------------------|
| TOTAL ............ 7.5 |
|--------------------------------------|
| David | 4-20-2012 | 2 |
| | 4-20-2012 | 1 |
|--------------------------------------|
| TOTAL ............ 3 |
|--------------------------------------|
| GRAND TOTAL ..........10.5 |
+--------------------------------------+
处理这个问题的最佳方法是什么?有很多选择。正在子查询...把PHP代码放在我的观点中...当然有更好的方法。
升级为答案
在 MySQL 中,您可以使用 WITH ROLLUP
修饰符在按GROUP BY
分组的表中添加额外的摘要行:
GROUP BY
子句允许使用WITH ROLLUP
修饰符,该修饰符会导致向摘要输出添加额外的行。这些行表示更高级别的(或超级聚合)汇总操作。 因此,ROLLUP
使您能够使用单个查询在多个分析级别回答问题。例如,它可用于为 OLAP(在线分析处理)操作提供支持。
通过查询,您可以执行以下操作:
SELECT id, date, SUM(hours) AS totalhours
FROM employees
WHERE id = 10
GROUP BY id, date, hours WITH ROLLUP