Я думаю, что это должно работать:
SELECT tags.tag, count(*) AS count
FROM posts INNER JOIN tags
ON (posts.tag_id = tags.id)
WHERE posts.date >= SUBTIME(NOW(), '12:00:00')
GROUP BY tags.id
ORDER BY count(*) DESC
Я протестировал 3 сообщения с тегом «SQL», созданным в течение 12 часов, и 2 сообщения с тегом «PHP», но только один из них был создан в течение 12 часов. Затем приведенный выше запрос возвращает:
tag count
SQL 3
PHP 1