1
resposta

Como eu incluo uma coluna com o COUNT nesta query?

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,
  FROM formula

-- Tentei de todas as formas em incluir uma coluna ao lado de mês e ano que pudesse contar a coluna (mes_ano)

1 resposta

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!