การหาค่า Avg Max Min ในสภาวะ Realtime ด้วย Insert into select
Today, 08:01 AM
Realtime คือเวลาจริง หรือความคงที่ในการทำงาน ตามช่วงเวลาที่ออกแบบไว้เช่น Realtime 1 นาที หมายความว่า ใน 1 นาทีต้องมีข้อมูล 1 ค่า กรณีต้องการ ค่า Avg max min แสดงว่าใน 1 นาที ต้องทำการ sample ข้อมูลมาเก็บไว้ก่อน(ควรเป็นจำนวน คี่)
การหาค่า AVG ควรใช้ Database เป็นที่เก็บข้อมูล แล้วสั่งรัน insert into select เพื่อป้องกันข้อผิดพลาดในเรื่องของ ขอบเขตของเวลา อันเกิดจาก การคำนวณด้วย Array เช่น index แรก ของ array เริ่มที่ 00 วินาที (เป็นเรื่องที่กำหนดได้ยากในการเขียนโปรแกรม)
ตัวอย่าง SQL(mySQL)
INSERT INTO catman.sensorhismin ( DateTime,SensorID,ValueAvg,ValueMax,ValueMin,ValueMag)
(
SELECT DateTime, SensorID,
Avg( Value ) AS ValueAvg,
Max( Value ) AS ValueMax,
Min(Value) AS ValueMin,
sum( abs( Value ) ) AS ValueMag
From Catman.sensorhis
WHERE DATETIME >= ( '2014-02-18 00:40:00' ) AND
DATETIME <= ( '2014-02-18 00:40:59' ) GROUP BY SensorID
);
Comments