如果我有一个MySQL表,例如:
我想使用SQL来计算PositiveResult列和NegativeResult列的总和.通常,我可以简单地在查询中执行SUM(PositiveResult).
但是,如果我想更进一步,将总计放在结果集的底部,该怎么办:
可以在数据级别实现此功能还是表示层问题?如果可以通过SQL完成,该怎么办?我有点SQL新手.
感谢答卷人.我现在将与客户核实情况.
另外,是否可以添加文本列,以使摘要行中不显示最后一行数据的值?像这样:
解决方法:
我也会在表示层中执行此操作,但您可以使用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 = ''
;