如果我有一个MySQL表,比如:
mysql - SQL将摘要行添加到MySQL结果集-LMLPHP
我想使用SQL计算PositiveResult列和NegativeResult列的总和。通常我可以在查询中执行SUM(PositiveResult)操作。
但如果我想更进一步,把总数放在结果集的底部:
mysql - SQL将摘要行添加到MySQL结果集-LMLPHP
这是在数据层实现的,还是表示层的问题?如果它可以通过SQL完成,我该怎么做呢?我有点SQL新手。
感谢受访者。我现在和顾客核对一下。
另外,是否可以添加一个文本列,以便在摘要行中不显示最后一行数据的值?这样地:
mysql - SQL将摘要行添加到MySQL结果集-LMLPHP

最佳答案

我也会在表示层中这样做,但是你可以用MySQL。。。

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,pos DECIMAL(5,2)
,neg DECIMAL(5,2)
);

INSERT INTO my_table VALUES
(1,0,0),
(2,1,-2.5),
(3,1.6,-1),
(4,1,-2);


SELECT COALESCE(id,'total') my_id,SUM(pos),SUM(neg) FROM my_table GROUP BY id WITH ROLLUP;

+-------+----------+----------+
| my_id | SUM(pos) | SUM(neg) |
+-------+----------+----------+
|     1 |     0.00 |     0.00 |
|     2 |     1.00 |    -2.50 |
|     3 |     1.60 |    -1.00 |
|     4 |     1.00 |    -2.00 |
|  total|     3.60 |    -5.50 |
+-------+----------+----------+
5 rows in set (0.02 sec)

这里有一个修改后的问题-它不漂亮,但我认为它的工作。。。
SELECT COALESCE(id,'') my_id
     , SUM(pos)
     , SUM(neg)
     , COALESCE(string,'') n
  FROM my_table
 GROUP
    BY id
     , string
  WITH ROLLUP
HAVING n <> '' OR my_id = ''
;

10-06 07:09