mySQL AVG - способ объединения двух результатов для AVG - PullRequest
1 голос
/ 01 апреля 2011

Я пытаюсь получить среднее количество взаимодействий в моих метриках, но этот запрос получает среднее количество взаимодействий для тех, кто взаимодействует с DID (те, что в metricsActions, присутствуют только в том случае, если они взаимодействовали, их metricsID все еще существует в metrics таблица).

Итак, мне интересно, как я могу получить среднее значение всех этих пользователей.Я могу сделать два запроса, но как мне тогда усреднить эти два результата?Можно ли объединить?

SELECT AVG(`instances`) FROM (SELECT m.`metricID`, COUNT(mc.`metricAction`) as `instances` FROM `metricActions` mc LEFT JOIN `metrics` m ON m.`metricID` = mc.`metricID` WHERE m.`clientID` = '10412' AND `type` = '2' AND GROUP BY mc.`metricID` ORDER BY `instances` DESC ) as `temp`

1 Ответ

2 голосов
/ 01 апреля 2011

Вы должны использовать LEFT JOIN наоборот:

SELECT  AVG(`instances`)
FROM    (
        SELECT  m.`metricID`, COUNT(mc.`metricAction`) as `instances`
        FROM   `metrics` m
        LEFT JOIN
                `metricActions` mc
        ON      mc.`metricID` = m.`metricID`
                AND mc.`type` = '2'
        WHERE   m.`clientID` = '10412'
        GROUP BY
                m.`metricID`
        ) as `temp`
...