php - 将 WHERE 和 GROUP BY 合并到日期时间总和 MySQL 查询中

标签 php mysql sql

我的查询:

我正在尝试按类别对“持续时间”列求和:

SELECT DATE_FORMAT(FROM_UNIXTIME(sum(`duration`)), '%T') AS `totalduration` 
FROM `my_custom_table`
WHERE `category` = "SLE"
GROUP BY `category`

结果为 NULL,但应为“05:00”。

如果我排除 WHERE 和 GROUP BY,则查询总和正确:

SELECT DATE_FORMAT(FROM_UNIXTIME(sum(`duration`)), '%T') AS `totalduration`
FROM `my_custom_table`

结果正确为 24:00:00。

如何将 WHERE 和 GROUP BY 合并到我的查询中?

我的数据:

由“持续时间”列(日期时间)和“类别”列(varchar 255)组成的 phpMyAdmin/MySQL 表:

0000-00-00 05:00:00 | SLE
0000-00-00 00:30:00 | CLA
0000-00-00 00:30:00 | CLA
0000-00-00 00:15:00 | FOO
0000-00-00 01:45:00 | MON
0000-00-00 00:30:00 | CLA
0000-00-00 01:30:00 | MON
0000-00-00 02:30:00 | CLE
0000-00-00 01:00:00 | CLA
0000-00-00 01:30:00 | MON
0000-00-00 01:00:00 | REC
0000-00-00 00:30:00 | CLA
0000-00-00 01:30:00 | MON
0000-00-00 00:45:00 | CLA
0000-00-00 01:00:00 | FOO
0000-00-00 01:00:00 | REC
0000-00-00 01:00:00 | REC
0000-00-00 01:00:00 | MON
0000-00-00 00:15:00 | NOT
0000-00-00 00:30:00 | CLA
0000-00-00 00:30:00 | CLA

最佳答案

我已经为您创建了一个 SQLFiddle:http://sqlfiddle.com/#!9/f31e6a/6/0

查询:

SELECT category, SEC_TO_TIME(SUM(TIME_TO_SEC(duration)))
FROM test
WHERE category = 'SLE'
GROUP BY category;

测试数据:

CREATE TABLE test (duration DATETIME, category TEXT);

INSERT INTO test (duration, category) VALUES
('0000-00-00 05:00:00', 'SLE'),
('0000-00-00 00:30:00', 'CLA'),
('0000-00-00 00:30:00', 'CLA'),
('0000-00-00 00:15:00', 'FOO'),
('0000-00-00 01:45:00', 'MON'),
('0000-00-00 00:30:00', 'CLA'),
('0000-00-00 01:30:00', 'MON'),
('0000-00-00 02:30:00', 'CLE'),
('0000-00-00 01:00:00', 'CLA'),
('0000-00-00 01:30:00', 'MON'),
('0000-00-00 01:00:00', 'REC'),
('0000-00-00 00:30:00', 'CLA'),
('0000-00-00 01:30:00', 'MON'),
('0000-00-00 00:45:00', 'CLA'),
('0000-00-00 01:00:00', 'FOO'),
('0000-00-00 01:00:00', 'REC'),
('0000-00-00 01:00:00', 'REC'),
('0000-00-00 01:00:00', 'MON'),
('0000-00-00 00:15:00', 'NOT'),
('0000-00-00 00:30:00', 'CLA'),
('0000-00-00 00:30:00', 'CLA');

以及相应的结果:

category    SEC_TO_TIME(SUM(TIME_TO_SEC(duration)))
SLE     05:00:00

关于php - 将 WHERE 和 GROUP BY 合并到日期时间总和 MySQL 查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49617738/

相关文章:

javascript - 如何更改html输入的边框颜色

javascript - 将 php 函数包含到 javascript

MySQL 将前导数字添加到列中的现有 ID

MySQL按每行数量返回结果

javascript - SQL 事务和 JavaScript Promises 有什么关系?

MySql递归逻辑

javascript - 如何使用 Javascript 跟踪出站点击

javascript - AJAX 调用未获取 id 并将其发送到 php 文件

mysql - WPF 应用程序连接到 Online DB?

sql - 如何阻止 Postgres 将记录创建详细信息输出到终端(rails c/dev 模式)? 100 0's of "放慢了我的程序