Я пытаюсь создать график Time series
для Графана, который показывает среднее значение за время. Данные поступают из четырех разных уровней качества, поэтому я хочу, чтобы каждый уровень умножался, чтобы отразить это. Выходные данные должны выглядеть как 2.85
один день, затем, возможно, 3.19
на следующий день и т. Д.
Пока что все, что я могу показать, - это среднее значение за все время. Пожалуйста, смотрите код ниже.
WITH days AS (
SELECT time::date AS day
FROM database.table
GROUP BY day
ORDER BY 1
)
SELECT
days.day AS time,
(
WITH level1 AS (SELECT count(level)*1 AS one FROM database.table where event = 'Certain Event' AND level = 'level1'),
level2 AS (SELECT count(level)*2 AS two FROM database.table where event = 'Certain Event' AND level = 'level2'),
level3 AS (SELECT count(level)*3 AS three FROM database.table where event = 'Certain Event' AND level = 'level3'),
level4 AS (SELECT count(level)*4 AS four FROM database.table where event = 'Certain Event' AND level = 'level4'),
total AS (SELECT count(level) AS tot FROM database.table where event = 'Certain Event')
SELECT SUM((one + two + three + four) / tot::NUMERIC(4,1)) FROM level1, level2, level3, level4, total
) AS "Average level"
FROM days
WHERE $__timeFilter(day)
GROUP BY day
ORDER BY 1
Как только я добавляю AND date_trunc('day', time::date) = date_trunc('day', days.day)
для получения значений в день, я получаю одну из двух следующих ошибок в зависимости от того, добавлю ли я ее в предложении WITH ... AS
или в последнем предложении SELECT SUM(...
.
This type of correlated subquery pattern is not supported due to internal error
This type of correlated subquery pattern is not supported yet
Означает ли это, что то, что я пытаюсь сделать, на самом деле невозможно, или, возможно, существует другой способ вычисления значения, который не включает коррелированные подзапросы?
Любая помощь по этому вопросу будет принята с благодарностью!