【问题标题】:Tabular data calculation - summing in middle of table表格数据计算 - 在表格中间求和
【发布时间】:2012-04-26 17:35:02
【问题描述】:

考虑一个简单的查询:

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

【问题讨论】:

标签: php mysql model-view-controller view


【解决方案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

【讨论】:

    猜你喜欢
    • 2013-02-25
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    相关资源
    最近更新 更多