考虑一个简单的查询:
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 |
+--------------------------------------+
有哪些最佳方法可以解决这个问题?有很多选择。 Subquerying ...把PHP代码放在我的视图中......当然有一种赌博方式。
答案 0 :(得分:1)
升级为答案
在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