Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
Mysql SQL server聚合函数查询_Mysql_Sql_Sql Server - Fatal编程技术网

Mysql SQL server聚合函数查询

Mysql SQL server聚合函数查询,mysql,sql,sql-server,Mysql,Sql,Sql Server,我有一个名为MusicTrack的表,其中包含MusicTrackID、TrackName和Duration列 我正在使用以下查询: Select Cast(DateAdd( ms,SUM(DateDiff( ms, '00:00:00', Duration)), '00:00:00' ) as time) as 'Total duration' from MusicTrack where MusicTrackID = '1' or MusicTrackID = '3'

我有一个名为MusicTrack的表,其中包含MusicTrackID、TrackName和Duration列

我正在使用以下查询:

    Select Cast(DateAdd( ms,SUM(DateDiff( ms, '00:00:00', Duration)), '00:00:00' ) as time) 
as 'Total duration' from   
    MusicTrack  where MusicTrackID = '1' or MusicTrackID = '3'
此查询将两个选定音乐曲目的持续时间相加,并将其显示在名为“总持续时间”的临时列中。“Duration”是数据类型Time,所以我将它转换为整数,然后再转换回来

我的问题:我可以用什么方式调整查询以同时包括TrackName字段和运行总持续时间?或者包括临时列和TrackName列

这样显示器将有TrackName和总持续时间。。。大致如下:

TrackName   Duration   Total duration

Name1       00:03:00     00:03:00
Name2       00:03:01     00:06:01
我试图像这样将TrackName列包含到查询中,但它不起作用:

Select TrackName, Cast(....) From MusicTrack  where MusicTrackID = '1' or MusicTrackID = '3'
试试下面

我创建了一个示例表

SELECT * INTO TMPTIME 
 FROM (
SELECT 1 AS ID ,'Name1' AS NAME,'00:03:00' AS T    
UNION 
SELECT 2 AS ID,'Name2' AS NAME,'00:03:01' AS T    
UNION
SELECT  3 AS ID,'Name3' AS NAME,'00:03:02' AS T   
UNION
SELECT 4 AS ID,'Name4' AS NAME,'00:03:41' AS T    
)TMP
输出查询

SELECT ID,NAME, T AS TIME,
(SELECT 
cast(DATEADD(ms, SUM(DATEDIFF(ms, '00:00:00.000', cast (t as time) )), '00:00:00.000') as time)
FROM TMPTIME T1 WHERE T1.ID<=TMPTIME.ID
) AS TOTAL

 FROM TMPTIME
用于SQL Server(非mySQL)

这里可以找到语法

对于mySql(不是SQL Server)

SQL中“运行总计”的研究
ID  NAME    TIME    TOTAL
1   Name1   00:03:00    00:03:00.0000000
2   Name2   00:03:01    00:06:01.0000000
3   Name3   00:03:02    00:09:03.0000000
4   Name4   00:03:41    00:12:44.0000000
SELECT TrackName, Duration, Cast(DateAdd(ms,RunningTotal,'00:00:00') as time) as 'Total Duration'
FROM
(SELECT TrackName, Duration,
  SUM(DateDiff(ms,'00:00:00',Duration)) OVER(ORDER BY MusicTrackId 
     ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) 
      AS RunningTotal
  FROM MusicTrack
  WHERE MusicTrackId IN (1,3)
)T
SELECT TrackName,Date_Format(Duration,'%k:%i:%s') as Duration,
                 Date_Format(runningTotal,'%k:%i:%s') as 'Total Duration'
FROM
  (SELECT TrackName, Duration,
          Sec_To_Time(@total:=@total + Time_To_Sec(Duration)) as runningTotal
   FROM MusicTrack,(SELECT @total:='00:00:00')T
   WHERE MusicTrackId IN (1,3)
   ORDER BY MusicTrackId
  )Result