mysql - 如何在mysql中添加两毫秒列

标签 mysql sql select

我有如下所示的表格

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  

我尝试使用此查询

按代码从结果组中选择总和(时间);//结果为整数值

并按代码从结果组中选择时间戳(sum(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() 等函数,您的符号秒:毫秒是错误的。

您可以使用以下查询:

SELECT code,AVG(REPLACE(time,':','.')) FROM results group by code

这会将值中的 : 替换为 .,创建一个 AVG() 可以正确处理的 float 。

结果:

code    AVG(REPLACE(time,':','.'))
123     10.105
145     11.114

当然,这会在 SQL 服务器上创建更多操作。最好的方法是将列定义更改为 FLOAT 并将秒和毫秒存储为 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

关于mysql - 如何在mysql中添加两毫秒列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27793711/

相关文章:

MySQL 查询带有给定偏移量的日期

mysql - 每位客户当天的倒数第五笔交易

mysql - 我需要多对多关系数据库的帮助

mysql - Jasper Server CE 6.2 在 MySQL 上的安装问题

sql - 从 PostgreSQL 中的 jsonb 数组中获取一个元素

php - 每个结果之间的空间

postgresql - 在 Postgres 中选择非重复值

mysql - 如何在此日期字符串 01/01/2004 中定位年份

php - 从 AppEngine 中的 Laravel PHP 连接时出现 SQL 错误 'No such file or directory'

sql - 如何下载网页并用SQL解析