У меня есть несколько таких таблиц:
> "dsid" "tag" "timestamp" "value"
> "989" "EE" "1445162347" "931.647"
> "990" "PO" "1445162347" "0.087"
> "991" "EE" "1445163247" "931.669"
> "992" "PO" "1445163247" "0.089"
> "993" "EE" "1445164147" "931.692"
> "994" "PO" "1445164147" "0.085"
> "995" "EE" "1445165047" "931.715"
> "996" "PO" "1445165047" "0.090"
EE - это количество (в кВтч) счетчика электроэнергии и PO мощность (в кВт) на счетчике, данные считываются изметр каждые 15 минут и записывается в базу данных.
Я ищу МАКС всех значений с TAG "PO", поэтому я исключаю все теги "EE".Я хочу код, который возвращает самое высокое значение, и это соответствует метке времени, которая имеет TAG "PO"
Я намереваюсь использовать этот код, чтобы расширить графическую панель управления (которая уже существует) со значениями MAX, MIN & AVGи их соответствующая отметка времени.
Это код, который у меня есть до сих пор, но, кажется, он всегда выбирает первое значение в диапазоне времени, который я передаю в предложении WHERE:
'''SELECT
FROM_UNIXTIME(timestamp) as time_sec,
'1P2' AS Meter,
tag as metric,
MIN(value) AS MIN,
MAX(VALUE) AS MAX,
AVG(VALUE) AS AVG
FROM `WSE_KA-KHW_1P2`
WHERE TAG NOT IN ('EE')
'''
В настоящее время я получаю следующие выходные данные:
"time_sec" "Meter" "metric" "MIN" "MAX" "AVG"
"2015-10-13 08:14:07" "1P2" "PO" "0.000000" "6.404" "3.2"
Что-то вроде этого:
"time_sec" "Meter" "metric" "MIN" "MAX" "AVG"
"2015-10-13 08:14:07" "1P2" "PO" "0.1" "" ""
"2015-12-13 10:14:07" "1P2" "PO" "" "6.404" ""
"" "1P2" "PO" "" "" "3.2"
В соответствии с запросом, вот несколько строк кода сценария вставки:
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (909, 'EE', 1445126346, '930.647', 1445125500, 1445126400, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (910, 'PO', 1445126346, '0.088', 1445125500, 1445126400, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (911, 'EE', 1445127246, '930.669', 1445126400, 1445127300, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (912, 'PO', 1445127246, '0.087', 1445126400, 1445127300, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (913, 'EE', 1445128146, '930.691', 1445127300, 1445128200, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (914, 'PO', 1445128146, '0.087', 1445127300, 1445128200, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (915, 'EE', 1445129046, '930.718', 1445128200, 1445129100, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (916, 'PO', 1445129046, '0.138', 1445128200, 1445129100, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (917, 'EE', 1445129947, '930.752', 1445129100, 1445130000, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (918, 'PO', 1445129947, '0.134', 1445129100, 1445130000, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (919, 'EE', 1445130847, '930.782', 1445130000, 1445130900, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (920, 'PO', 1445130847, '0.088', 1445130000, 1445130900, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (921, 'EE', 1445131747, '930.804', 1445130900, 1445131800, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (922, 'PO', 1445131747, '0.087', 1445130900, 1445131800, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (923, 'EE', 1445132647, '930.826', 1445131800, 1445132700, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (924, 'PO', 1445132647, '0.086', 1445131800, 1445132700, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (925, 'EE', 1445133547, '930.848', 1445132700, 1445133600, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (926, 'PO', 1445133547, '0.086', 1445132700, 1445133600, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (927, 'EE', 1445134447, '930.870', 1445133600, 1445134500, 0);
INSERT INTO `WSE_KA-KHW_1P2` (`dsid`, `tag`, `timestamp`, `value`, `startts`, `correctts`, `isfixed`) VALUES (928, 'PO', 1445134447, '0.087', 1445133600, 1445134500, 0);
Дополнительные столбцы после значения не имеют значения ...
THX для @symcbean Теперь я немного ближе к тому, что мне нужно достичь:
SELECT records.*, aggregated.*
FROM
(
SELECT
from_unixtime(TIMESTAMP),
tag AS metric,
MAX(VALUE) AS 1P2_MAX,
AVG(VALUE) AS 1P2_AVG
FROM `WSE_KA-KHW_1P2`
WHERE TAG NOT IN ('EE')
AND from_unixtime(TIMESTAMP BETWEEN FROM_UNIXTIME(1546297200) AND FROM_UNIXTIME(1577833199))
) records JOIN
(
SELECT
tag AS metric,
MAX(VALUE) AS 1P2_MAX,
AVG(VALUE) AS 1P2_AVG
FROM `WSE_KA-KHW_1P2`
WHERE TAG NOT IN ('EE')
AND from_unixtime(TIMESTAMP BETWEEN FROM_UNIXTIME(1546297200) AND FROM_UNIXTIME(1577833199))
GROUP BY metric
) aggregated ON
records.metric=aggregated.metric
I 'мы уже использовали три из них в grafana, получили хорошую таблицу, но она всегда выбирает первое значение времени в базе данных как отметку времени.Но мне нужно вывести временную метку из 1P2_MAX.Таким образом, я буду знать, когда именно произошло МАКС ...
В настоящее время вывод выглядит так:
"from_unixtime(TIMESTAMP)" "metric" "1P2_MAX" "1P2_AVG" "metric" "1P2_MAX" "1P2_AVG"
"2015-10-13 08:14:07" "PO" "6.404" "0,4250229947656381" "PO" "6.404" "0,4250229947656381"