MYSQL наиболее распространенное значение столбца и AVG в одном запросе - PullRequest
0 голосов
/ 25 октября 2018

У меня есть одна таблица со столбцами, которая содержит данные о ветре (ветер, порывы и направление)

Я хочу получить среднее значение для ветра и порыва ветра и наиболее распространенное значение для направления за выбранный период времени

Я могу сделать это в двух запросах, но не знаю, как их объединить

SELECT
    avg(wind) as wind,
    avg(gust) as gust
FROM
    station
WHERE
    id >='2018-10-20 00:00:00' AND id <'2018-10-20 04:00:00'

SELECT
    direction,
    count(direction) as sm
FROM
    station
WHERE
    id >='2018-10-20 00:00:00' AND id <'2018-10-20 04:00:00'
GROUP BY
    direction
ORDER BY
    sm DESC LIMIT 1

Я пытался

SELECT
    avg(wind) as wind,
    avg(gust) as gust,
    direction,
    count(direction) as sm
FROM
    station
WHERE
    id >='2018-10-20 00:00:00' AND id <'2018-10-20 04:00:00'
GROUP BY
    direction
ORDER BY
    sm DESC LIMIT 1

, но это вычислит среднее для данных, но толькогде направление является наиболее распространенным значением.Помощь приветствуется

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете попробовать это.

SELECT direction,
       t1.wind,
       t1.gust,
       count(direction) as sm
FROM station CROSS JOIN (
    SELECT avg(wind) as wind,
           avg(gust) as gust 
    FROM station 
    WHERE id >='2018-10-20 00:00:00' AND id <'2018-10-20 04:00:00' 
) t1
WHERE id >='2018-10-20 00:00:00' AND id <'2018-10-20 04:00:00' 
GROUP BY direction 
ORDER BY sm DESC 
LIMIT 1

или использовать подзапрос в select

SELECT direction,
       (select avg(wind) FROM station) wind,
       (select avg(gust) FROM station) gust,
       count(direction) as sm
FROM station 
WHERE id >='2018-10-20 00:00:00' AND id <'2018-10-20 04:00:00' 
GROUP BY direction 
ORDER BY sm DESC 
LIMIT 1
...