我有PostgreSQL中的表是這樣創建的:如何通過時間戳來平均表格行?
-- Table: myTable
-- DROP TABLE myTable;
CREATE TABLE myTable
(
"TimeStamp" double precision,
"Temperature" double precision,
"Pressure" double precision,
"Milligrams" double precision,
table_pkey serial NOT NULL,
CONSTRAINT myTable_pkey PRIMARY KEY (table_pkey)
);
其中timestamp是因爲某一天一定數目的逝去秒。
我看到如何平均一些表的行數,以產生一個精簡表。例如,
SELECT AVG("TimeStamp") "Seconds", AVG("Temperature") "Temperature",
AVG("Pressure") "Pressure", AVG("Milligrams") "Milligrams"
FROM (SELECT ROW_NUMBER() OVER(ORDER BY null) - 1 rn, * FROM myTable) t
GROUP BY (rn/120)
ORDER BY rn/120
將輸出一個表,每個輸出行的輸入行數爲120。
而不是將某些行數平均在一起,我想將一些TimeStamp跨度平均在一起。例如,生成一個表格,其中每行包含一天中每個小時的平均值。
編輯
這與改變時間戳列鍵入typestamp合併似乎工作:
SELECT date_trunc('hour', "Acquired"), AVG("Temperature"),
AVG("Pressure"), AVG("Milligrams")
FROM myTable
WHERE 1=1
GROUP BY date_trunc('hour', "Acquired")
ORDER BY 1
什麼是你的 「時間戳」 列的0值? PostgreSQL有一個'timestamp'數據類型,它是從1970-01-01 00:00:00開始經過的秒數。如果您的時間戳具有相同的基礎,我建議您將列更改爲'timestamp'類型,以便您可以使用PostgreSQL中標準的所有日期/時間操作例程。 – Patrick