हाय मेरे पास एक टेबल है जैसे:

CREATE TABLE `data` (
 `time` DATETIME NOT NULL.
 `cpu` DECIMAL(10, 4) UNSIGNED NOT NULL
)

और मेरे पास प्रत्येक 10 सेकंड में पंक्ति है, उदाहरण के लिए:

time                    cpu     
2018-09-12 11:49:41     0.200
2018-09-12 11:49:51     0.100
2018-09-12 11:50:01     0.200
2018-09-12 11:50:11     0.301
2018-09-12 11:50:21     0.100
2018-09-12 11:50:31     0.000
2018-09-12 11:50:41     0.200
2018-09-12 11:50:51     0.100
2018-09-12 11:51:01     0.100
2018-09-12 11:51:11     0.400
2018-09-12 11:51:21     0.000
2018-09-12 11:51:31     0.000
2018-09-12 11:51:41     0.300
2018-09-12 11:51:51     0.300
2018-09-12 11:52:01     0.300
2018-09-12 11:52:11     0.200
2018-09-12 11:52:21     0.000
2018-09-12 11:52:31     0.200
2018-09-12 11:52:41     0.100
2018-09-12 11:52:51     0.200
2018-09-12 11:53:01     0.801
2018-09-12 11:53:11     0.100
2018-09-12 11:53:21     0.200
2018-09-12 11:53:31     0.200
2018-09-12 11:53:41     0.100

मैं प्रत्येक 15 मिनट में सीपीयू औसत की गणना करना चाहता हूं। मैं यह कैसे कर सकता हूं?

अग्रिम में धन्यवाद!!!

मैं उपयोग कर रहा हूँ:

MariaDB [(none)]> SELECT VERSION();
+----------------------------------+
| VERSION()                        |
+----------------------------------+
| 10.1.30-MariaDB-0ubuntu0.17.10.1 |
+----------------------------------+
1 row in set (0.00 sec)
-1
xkill 17 सितंबर 2018, 13:56

1 उत्तर

सबसे बढ़िया उत्तर

आप time को 15 मिनट की सीमा में छोटा कर सकते हैं (शून्य आउट सेकंड, मिनट मॉड 15 मिनट घटाएं), फिर परिणामी मान से समूहित करें:

SELECT clamped_time, AVG(cpu) AS average_cpu
FROM (
    SELECT
        time
        - INTERVAL EXTRACT(SECOND FROM time) SECOND
        - INTERVAL EXTRACT(MINUTE FROM time) % 15 MINUTE AS clamped_time,
        cpu
    FROM data
) AS sq
GROUP BY clamped_time
1
Community 17 सितंबर 2018, 21:54