我有一个 sample table在 SQL Fiddle 上。
CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT UNIQUE,
Shot VARCHAR(4),
sec varchar(5),
lay VARCHAR(15) NOT NULL,
lay_status VARCHAR(15) NOT NULL,
blk VARCHAR(10) NOT NULL,
blk_status VARCHAR(15) NOT NULL,
pri VARCHAR(10) NOT NULL,
pri_status VARCHAR(15) NOT NULL,
ani VARCHAR(10) NOT NULL,
ani_status VARCHAR(15) NOT NULL,
status VARCHAR(5)
);
INSERT INTO my_table VALUES
(1,'SH01','3','1863','yes','1863','yes','P4645','yes','P4557','yes','Over'),
(2,'SH02','2.5','1863','yes','P4645','no','P4557','yes','1863','no','Over'),
(3,'SH03','0.5','P4645','yes','P4557','yes','1863','yes','1863','yes','WIP'),
(4,'SH04','1.25','1863','no','P4645','no','P4557','yes','1863','yes','RTK'),
(5,'SH05','1','1863','yes','1863','yes','P4645','yes','P4557','yes','WIP'),
(6,'SH06','6','P4557','yes','P4645','yes','P4645','yes','P4557','yes','WIP');
我使用下面的 SQL 检索 lay=1863
的镜头。并在秒数的底部获得总数。
但结果是错误的。谁能指导我。
SELECT
IFNULL(Shot,'TOTAL') AS Shot
, sec
, lay
FROM my_table
where lay='1863'
group by shot with rollup;
总计(sec 列)的结果应该是 7.75,现在显示 1
SHOT SEC LAY
SH01 3 1863
SH02 2.5 1863
SH04 1.25 1863
SH05 1 1863
TOTAL 7.75
最佳答案
如您所愿,请使用此查询
SELECT
Shot
, sum(sec)
FROM my_table
where lay='1863'
group by shot with rollup;
GROUP BY 子句允许使用 WITH ROLLUP 修饰符将额外的行添加到汇总输出中。这些行代表更高级别(或 super 聚合)的汇总操作
引用http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html
关于mysql - 如何得到一列的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15245685/