【发布时间】:2019-10-03 09:23:39
【问题描述】:
创建和插入数据是
CREATE TABLE IF NOT EXISTS `testTime` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`startTime` time(3) DEFAULT NULL,
`endTime` time(3) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=40910 DEFAULT CHARSET=utf8;
INSERT INTO `testTime` (`startTime`, `endTime`) VALUES
('00:00:37.185', '00:00:32.141'),
('00:00:41.229', '00:00:32.255'),
('00:00:37.278', '00:00:23.548'),
('00:00:37.205', '00:00:28.479'),
('00:00:41.343', '00:00:25.354'),
('00:00:38.703', '00:00:38.645'),
('00:00:37.990', '00:00:32.182'),
('00:00:37.858', '00:00:36.589');
我可以求和、求差,但平均值有问题。我会使用 AVG 函数,因为有时我会使用多个时间列进行计算。我试试:
SELECT
id,
SEC_TO_TIME(startTime+endTime) TotalSum,
SEC_TO_TIME(startTime - endTime) Diff,
TIME_TO_SEC(AVG(SEC_TO_TIME(startTime + endTime))) AverageT
FROM testTime
Group by id;
我需要 '00:01:09.326' 格式的返回值。使用 Sum,diff 运行良好,但不知道如何使用 avg。
AVG 结果应该是:
00:00:34.663
00:00:36.742
00:00:30.413
00:00:32.842
00:00:33.348
00:00:38.674
00:00:35.086
00:00:37.223
谢谢
【问题讨论】:
-
试试这个
SEC_TO_TIME(TIME_TO_SEC(AVG(SEC_TO_TIME(startTime + endTime)))) AverageT -
完全没有,因为它返回 00:01:09,这可能会像 1 分 9 秒那样令人困惑。初始格式为 00:00:37.185,预期返回值应为 00:00:01.090
-
为什么单个值的平均值会有所不同?如果您要通过添加开始和结束时间来检查一行,那么总和将是平均值,对吗?
-
抱歉忘记了列的名称,我应该称它们为 s1、s2。问题是我找不到将 avg 与 time(3) 字段一起使用的方法。
-
请添加您的预期结果