1

考虑一个简单的查询:

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代码放在我的视野中...肯定有更好的方法。

4

1 回答 1

1

升级为答案

GROUP BY在 MySQL 中,您可以使用WITH ROLLUP修饰符在分组的表中添加额外的汇总行:

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
于 2012-04-26T17:42:16.657 回答