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_Average - Fatal编程技术网

平均sql表中的数据

平均sql表中的数据,sql,average,Sql,Average,在下列情况下我需要你的帮助 我有表格数据 在该表中,我有大量记录,如下所示 PK,ProjectID,MAchineId,Powervalue,PowerData 1 1 1 20.5 2011-07-05 12:00:00 2 1 1 21.5 2011-07-05 12:01:00 3 1 1 22.5 2011-07-05 12:02:00

在下列情况下我需要你的帮助

我有表格数据

在该表中,我有大量记录,如下所示

PK,ProjectID,MAchineId,Powervalue,PowerData
1     1         1         20.5     2011-07-05 12:00:00    
2     1         1         21.5     2011-07-05 12:01:00
3     1         1         22.5     2011-07-05 12:02:00
4     1         1         23.5     2011-07-05 12:03:00
5     1         1         24.5     2011-07-05 12:04:00

6     1         1         25.5     2011-07-05 12:05:00    
7     1         1         26.5     2011-07-05 12:06:00
8     1         1         27.5     2011-07-05 12:07:00
9     1         1         26.5     2011-07-05 12:08:00
10     1        1         28.5     2011-07-05 12:09:00
输出

PK,ProjectID,MAchineId,Powervalue(Avg value of power),PowerData

1     1         1           20.5            2011-07-05 12:00:00    
6     1         1           25.5            2011-07-05 12:05:00    

任何帮助都将不胜感激。提前谢谢。

您只需要平均功率值

SELECT PK,ProjectID,MachineID, AVG(PowerValue), PowerData FROM ChartData
例如,如果您想要每台机器的平均功率值,这将成为查询:

SELECT PK,ProjectID,MachineID, AVG(PowerValue), PowerData FROM ChartData GROUP BY MachineID

据我所知,你没有做任何平均值

我猜你想每五个元组进行一次聚合?如果是这样的话,也许类似这样的事情会有所帮助:

选择PK、ProjectID、MachineID、平均值(功率值)、功率数据,从表格分组依据(PK-1)/5

虽然我真的不知道你是否能通过分组来做到这一点

@gbn:我想直接回答你的评论,但我觉得我没有这个特权。您能解释一下为什么除了MySql之外,其他所有记录都会失败吗?

选择每隔5条记录(T-SQL)


如果不进一步说明您想要什么,这是我能给出的最好答案。

为什么要按5行分组?PK中的差距如何?是否按日期时间值分组?如果是这样的话,那么缺少间隔又如何呢?这将在除MySQL之外的所有平台上失败,因为聚合语法不正确。在MySQL上,它不会给出OP提到的输出。理解OP的问题有点困难。他不是在问什么。@TJHeuvel我想这样,但每五分钟一次。PowerData是什么类型的?DateTime、Timestamp或更差的varchar?@TJHeuvel Powerdata是DateTime,PK中是否有间隙?由于聚合语法不正确,除了MySQL之外,其他平台都会失败。在MySQL上,它不会给出OP提到的输出。。。
Select * from ChartData where PK=1 or PK=6
select
        ch.*
    from
        (select
                row_number() over (order by pk asc) as r,
                pk
            from
                chartdata
        ) as r
        inner join chartdata as ch
            on r.pk = c.pl
    where
        (r.r-1)%5 = 0
;