Oi, Thiago, tudo certinho?
Como você está concatenando o ano com o mês na coluna mes_ano, cada valor será único e o resultado de COUNT será 1 em cada célula da coluna. A query ficaria assim:
WITH formula AS (
SELECT * FROM UNNEST(
GENERATE_DATE_ARRAY('2019-01-01', '2025-12-31', INTERVAL 1 MONTH)
) AS example
)
SELECT
CONCAT(EXTRACT(YEAR FROM example), EXTRACT(MONTH FROM example)) AS mes_ano,
COUNT(*) AS conta
FROM formula
GROUP BY mes_ano;
Se você quisesse contar, por exemplo, quantos meses tem em cada ano, a query poderia ser assim:
WITH formula AS (
SELECT * FROM UNNEST(
GENERATE_DATE_ARRAY('2019-01-01', '2025-12-31', INTERVAL 1 MONTH)
) AS example
)
SELECT
EXTRACT(YEAR FROM example) AS ano,
COUNT(EXTRACT(MONTH FROM example)),
FROM formula
GROUP BY ano
ORDER BY ano;
Assim, o retorno seria uma tabela contendo uma linha para cada ano entre 2019 e 2025, e uma coluna com o valor 12 se repetindo, como a quantidade de meses.
Perceba que o COUNT, por ser uma função de agregação, é geralmente utilizada em conjunto e conforme a instrução GROUP BY, quando o que se deseja é contar o número de ocorrências distintas em diferentes categorias.
Espero ter ajudado um pouquinho, Thiago. Se quiser conversar mais a respeito, estou por aqui.
Abraço!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!