Примерно, как-то так, если не ошибаюсь:
SELECT
`ID`
, `post_title`
, pv30.cnt_month
, COALESCE(pv7.cnt_week, 0) cnt_week
, COALESCE(pv1.cnt_day, 0) cnt_day
FROM `wp_posts` AS p
INNER JOIN (
SELECT id, count(id) cnt_month
FROM `wp_post_views` pv
WHERE pv.time >= CURDATE() - INTERVAL 30 DAY
GROUP BY pv.id
) AS pv30
ON pv30.id = p.id
LEFT JOIN (
SELECT id, count(id) cnt_week
FROM `wp_post_views` pv
WHERE pv.time >= CURDATE() - INTERVAL 7 DAY
GROUP BY pv.id
) AS pv7
ON pv7.id = p.id
LEFT JOIN (
SELECT id, count(id) cnt_day
FROM `wp_post_views` pv
WHERE pv.time >= CURDATE() - INTERVAL 1 DAY
GROUP BY pv.id
) AS pv1
ON pv1.id = p.id
ORDER BY pv30.cnt_month DESC, pv7.cnt_week DESC, pv1.cnt_day DESC
LIMIT 10;