mysql - 如何得到一列的总数

标签 mysql sql

我有一个 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/

相关文章:

PHP "for"循环不正确循环

MySQL 和 Openstack 需要一些查询建议

sql - Delphi ADOQuery 在另一个 ADOQuery 插入后没有拾取记录

sql - postgres 以类似条件计数

mysql - SQL 进行简单的相关性排名

mysql - PHPStorm 无法连接到本地 MySQL

php - DQL : Class '(' is not defined 中的嵌套子查询错误

sql - 如何删除每个日期都有重复值的记录

mysql - 如何比较两个表中的列组合?

php - 文档写入 SQL 数据库,同时保留结构,以便能够将数据库打印在纸上