Получить среднее число значений в каждом диапазоне конкретных эпох в Отметка времени Unix, который возвращает -1 в конкретном состоянии в MySQL

Morteza али Ахмади:

У меня есть таблица MySQL, который имеет некоторые записи следующим образом:

unix_timestamp           value

1001                     2
1003                     3
1012                     1
1025                     5
1040                     0
1101                     3
1105                     4
1130                     0
...

Я хочу, чтобы вычислить среднее на каждые 10 эпох увидеть следующие результаты:

unix_timestamp_range         avg_value

1001-1010                    2.5
1011-1020                    1
1021-1030                    5
1031-1040                    0
1041-1050                   -1
1051-1060                   -1
1061-1070                   -1
1071-1080                   -1
1081-1090                   -1
1091-1100                   -1
1101-1110                    3.5
1111-1120                   -1
1121-1130                    0
...

Я видел , что некоторые подобные ответы хотели ввести описание ссылки здесь и введите описание ссылки здесь и введите описание ссылки здесь , но эти ответы не являются решением для моего конкретного вопроса. Как я могу получить вышеуказанные результаты?

Тим Biegeleisen:

Самый простой способ сделать это состоит в использовании таблицы календаря. Рассмотрим этот подход:

SELECT
    CONCAT(CAST(cal.ts AS CHAR(50)), '-', CAST(cal.ts + 9 AS CHAR(50))) AS unix_timestamp_range,
    CASE WHEN COUNT(t.value) > 0 THEN AVG(t.value) ELSE -1 END AS avg_value
FROM
(
    SELECT 1001 AS ts UNION ALL
    SELECT 1011 UNION ALL
    SELECT 1021 UNION ALL
    ...
) cal
LEFT JOIN yourTable t
    ON t.unix_timestamp BETWEEN cal.ts AND cal.ts + 9
GROUP BY
    cal.ts
ORDER BY
    cal.ts;

На практике, если у вас есть необходимость сделать этот вид запроса часто, вместо встроенного подзапроса помечен как calвыше, вы можете иметь полный специальный стол , представляющий все диапазоны временных меток.

рекомендация

отhttp://43.154.161.224:23101/article/api/json?id=16793&siteId=1