1
resposta

[Dúvida] Filtro

Galera,

preciso filtrar cidades por pais, estou fazendo algo que está retornando errado.

SELECT DISTINCT country, city, COUNT (*) FROM locations GROUP BY country, city order by country ASC, city ASC

dessa forma não aparece a quantidade de cidade por pais.

1 resposta

Oi, Paula! Tudo bem?

Desde já, peço desculpas pela demora em retornar.

Para encontrar a quantidade de cidades por país, podemos utilizar a seguinte consulta:

SELECT country, COUNT(*) FROM locations 
GROUP BY country 
ORDER BY country ASC;

Como o critério de agrupamento partirá da quantidade de vezes que um país aparece em nossa tabela, não precisamos utilizar o campo city em nosso SELECT!

Para um melhor entendimento da consulta acima, a separei em algumas partes, observe:

  • Inicialmente, estamos selecionando o campo country e obtendo, através da função COUNT(*), o total de registros da tabela locations;
  • Depois disso, estamos usando a cláusula GROUP BY para agrupar os registros encontrados a partir do campo country. Com isso, haverá uma mudança na contagem feita com o COUNT(*), que agora retornará os dados conforme o agrupamento;
  • Por fim, estamos ordenando a coluna country em ordem crescente.

Dessa forma, temos como resultado uma consulta com duas colunas:

  1. Coluna country, com o nome de cada país;
  2. Coluna COUNT(*), que mostra a quantidade de cidades por país.

Para deixar a visualização mais explicativa, podemos dar um apelido à coluna COUNT(*) chamando-a de total_cities (total de cidades):

SELECT country, COUNT(*) AS total_cities FROM locations 
GROUP BY country 
ORDER BY country ASC;

Note que, para darmos o apelido, utilizamos a cláusula AS, que realiza justamente essa "nomeação".

Caso existam, por exemplo, três cidades do Brasil (o que significa dizer que este país aparece três vezes na tabela locations), a nossa consulta apresentará o resultado abaixo:

countrytotal_cities
Brasil3

Paula, espero ter ajudado! Caso surja alguma dúvida após minha explicação, estarei aqui para conversarmos!

Até mais.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!