Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL如何查询平均运行时间_Sql_Time_Average - Fatal编程技术网

SQL如何查询平均运行时间

SQL如何查询平均运行时间,sql,time,average,Sql,Time,Average,我已经搜索过了,他们说你不能使用AVGtime/date。我试图做的是查询并获得平均运行时间。例如: 表1 Runner Name | Run Time (minutes:seconds) Jack | 1:20 Jack | 1:22 Jack | 1:18 Paul | 1:19 Paul | 1:24 Paul | 1:17 Troy

我已经搜索过了,他们说你不能使用AVGtime/date。我试图做的是查询并获得平均运行时间。例如:

表1

Runner Name    | Run Time (minutes:seconds)  
Jack           | 1:20  
Jack           | 1:22  
Jack           | 1:18  
Paul           | 1:19  
Paul           | 1:24  
Paul           | 1:17  
Troy           | 1:30  
Troy           | 1:40  
Troy           | 1:35  
结果:

Runner Name    | Average Run Time  
Jack           | 1:20  
Paul           | 1:20  
Troy           | 1:35  
我尝试了几个查询,例如CastAVGCAST。。。
时间戳…

看起来运行时是varchar,而不是time。否则应该是00:01:20。以下是基于这一假设:

create table t1 (Runner varchar(64) not null,Runtime varchar(30) not null);

INSERT t1(Runner,Runtime)
VALUES('Jack','1:20'),('Jack','1:22'),('Jack','1:18'),
('Paul','1:19'),('Paul','1:24'),('Paul','1:17'),
('Troy','1:30'),('Troy','1:40'),('Troy','1:35');

SELECT Runner,CAST(AVG(CAST(CAST(CONCAT('00:',Runtime) AS time) AS unsigned)) AS time) AS AvgRunTime
FROM t1
GROUP BY Runner;

操作数数据类型时间对于avg运算符无效,因此您可以使用它来获取以秒为单位的平均值:

select Runner, avg(datediff(ss, 0, cast(concat("00:",Runtime) as time)))
from t1
group by Runner

您可以尝试下面的代码。请相应调整列名和表名

SELECT Runner_Name,
CAST(AVG(CAST(Run_Time AS TIME)) AS TIME) 
FROM Table1
GROUP BY Runner_Name

数据库是什么,每列的数据类型是什么?SQL数据库表1不确定数据类型是什么,但该列称为运行时,数据以时间格式显示,如上所述。SQL只是一种查询数据库的语言,而不是数据库引擎本身。你能指出那个数据库吗?嗯,我不确定那个数据库是什么类型的。对不起,我相信它们是mysql数据库。我在excel中手动操作,结果与之不同。我还得到了一些空值,当我在Excel中这样做的时候,它一次也不会得到任何空值,这不会给你几秒钟的时间。我想我们的期望是平均秒数。秒仍然存在。强制转换为未签名,然后强制转换回时间:选择castcont'00:',从T1开始的运行时与未签名时间与运行时相同您的查询与上一个查询类似。它给了我一些空值作为平均值,当我在Excel中手动执行时,它没有任何空值。该列中有空值吗?该列中没有空值。我很好。您可以在这里检查fiddle-错误:调用本机函数'datediff'时参数计数不正确,我刚刚测试了它。在SQL Server 2017 14.0.2027.2上运行良好。我假设Runner和Runtime都是varchar。