如何在 mysql 中添加两毫秒列
how to add two millisecond column in mysql
我有table如下图
gid code time qid
1 123 08:108 15
1 145 11:012 15
1 145 11:216 16
1 123 12:102 16
现在你想对 'gid' 进行分组并添加具有相同代码列的两个时间(例如:我正在使用 123,计算时间 (08:108+12:102)/2。除以'2'因为代码123出现了两次,如果出现了三次那么除以3这应该是动态的。
我想要的结果应该是
gid code time
1 123 10:105
1 145 11:114
我试过使用这个查询
SELECT sum(time) FROM 结果按代码分组; // 结果为整数值
and SELECT timestamp(sum(time)) FROM results group by code; // 结果为空
您可以在 time
列上使用 avg
聚合函数 - 您只需要在完成后将其转换回 time
,然后使用 time_format
如果默认格式不适合您:
SELECT gid, code, TIME_FORMAT(TIME(AVG(`time`)), '%H-%i.%f')
FROM mytable
GROUP BY gid, code
您的 time
字段看起来不像是 TIME
类型。 TIME 字段的格式为 HH:MM:SS
,并且不允许存储毫秒数。 MySQL Documentation states that trailing fractions of seconds are allowed in date and time values, but are discarded and not stored.
您的 time
字段看起来像是一个 varchar,虽然您可以在其上使用 SUM()
或 AVG()
等函数,但您的符号 seconds:milliseconds
是错误的。
您可以使用以下查询:
SELECT code,AVG(REPLACE(time,':','.')) FROM results group by code
这会将您的值中的 :
替换为 .
,创建一个浮点数 AVG()
可以正确处理。
结果:
code AVG(REPLACE(time,':','.'))
123 10.105
145 11.114
当然这会在 SQL 服务器上创建更多操作。最好的方法是将列定义更改为 FLOAT
并将秒数和毫秒数存储为浮点数:
code time
123 8.108
145 11.012
145 11.216
123 12.102
SELECT code,AVG(time) FROM results GROUP BY code
的结果:
code AVG(time)
123 10.1050000190735
145 11.1139998435974
我有table如下图
gid code time qid
1 123 08:108 15
1 145 11:012 15
1 145 11:216 16
1 123 12:102 16
现在你想对 'gid' 进行分组并添加具有相同代码列的两个时间(例如:我正在使用 123,计算时间 (08:108+12:102)/2。除以'2'因为代码123出现了两次,如果出现了三次那么除以3这应该是动态的。
我想要的结果应该是
gid code time
1 123 10:105
1 145 11:114
我试过使用这个查询
SELECT sum(time) FROM 结果按代码分组; // 结果为整数值
and SELECT timestamp(sum(time)) FROM results group by code; // 结果为空
您可以在 time
列上使用 avg
聚合函数 - 您只需要在完成后将其转换回 time
,然后使用 time_format
如果默认格式不适合您:
SELECT gid, code, TIME_FORMAT(TIME(AVG(`time`)), '%H-%i.%f')
FROM mytable
GROUP BY gid, code
您的 time
字段看起来不像是 TIME
类型。 TIME 字段的格式为 HH:MM:SS
,并且不允许存储毫秒数。 MySQL Documentation states that trailing fractions of seconds are allowed in date and time values, but are discarded and not stored.
您的 time
字段看起来像是一个 varchar,虽然您可以在其上使用 SUM()
或 AVG()
等函数,但您的符号 seconds:milliseconds
是错误的。
您可以使用以下查询:
SELECT code,AVG(REPLACE(time,':','.')) FROM results group by code
这会将您的值中的 :
替换为 .
,创建一个浮点数 AVG()
可以正确处理。
结果:
code AVG(REPLACE(time,':','.'))
123 10.105
145 11.114
当然这会在 SQL 服务器上创建更多操作。最好的方法是将列定义更改为 FLOAT
并将秒数和毫秒数存储为浮点数:
code time
123 8.108
145 11.012
145 11.216
123 12.102
SELECT code,AVG(time) FROM results GROUP BY code
的结果:
code AVG(time)
123 10.1050000190735
145 11.1139998435974