CREATE OR REPLACE VIEW month_genres AS
SELECT
    ol.genre_name,
    ol.genre_url,
    COUNT(*) AS plays,
    json_build_object(
        'alt', ol.genre_name,
        'subtext', CONCAT(COUNT(*), ' plays')
    ) AS grid
FROM
    optimized_listens ol
WHERE
    TO_TIMESTAMP(ol.listened_at) >= NOW() - INTERVAL '30 days'
GROUP BY
    ol.genre_name, ol.genre_url
ORDER BY
    plays DESC;