Усреднить данные в таблице sql - PullRequest
1 голос
/ 25 августа 2011

Мне нужна ваша помощь в следующем случае.

у меня есть таблица 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 ]

2 голосов
/ 25 августа 2011
Select * from ChartData where PK=1 or PK=6

Вы не делаете никаких средних, насколько я знаю

0 голосов
/ 25 августа 2011

Выберите каждую 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
;

Без дальнейших разъяснений, что вы хотите, это лучший ответ, который я могу дать.

0 голосов
/ 25 августа 2011

Полагаю, вы хотите агрегировать каждые пять кортежей?Если так, может быть, что-то вроде этого поможет:

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

, хотя я действительно не знаю, сможете ли вы сделать это с помощью GROUP BY

@ gbn: Iхотел бы ответить на ваш комментарий напрямую, но я думаю, что мне не хватает привилегий.Можете ли вы объяснить, почему это не сработает на всех, кроме MySql?

0 голосов
/ 25 августа 2011

Вы просто хотите среднее значение мощности?

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

Если вы, например, хотите получить среднее значение мощности на машину, это будет запросом:

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