平均sql表中的数据

时间:2011-08-25 10:53:34

标签: sql average

在以下情况下我需要你的帮助。

我有表ChartData

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

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    

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

4 个答案:

答案 0 :(得分:2)

Select * from ChartData where PK=1 or PK=6

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

答案 1 :(得分:0)

你只想要平均功率值?

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

如果你想要每台机器的平均功率值,这将成为查询:

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

答案 2 :(得分:0)

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

SELECT PK, ProjectID, MachineID, AVG(Powervalue), PowerData FROM table GROUP BY (PK-1)/5

虽然我真的不知道你是否可以用GROUP BY来做到这一点

@gbn:我想直接回答你的评论,但我认为我缺乏特权。你能解释为什么除了MySql之外都会失败吗?

答案 3 :(得分:0)

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

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
;

如果没有进一步澄清你想要什么,这是我能给出的最佳答案。