Cláusula Group By
Bem-vindo ao curso de SQL Intermediário!
Na primeira seção, vamos explorar como agrupar e agregar dados em nossas tabelas.
Vamos entender o que significa "agrupar dados" usando um exemplo simples de uma tabela de funcionários:
Agrupando Dados
Temos a tarefa de descobrir o número de funcionários em cada departamento. Para isso, vamos agrupar os dados pela coluna department
e utilizar agregação com a função COUNT(*)
.
Veja como será a implementação:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Como você pode ver, a sintaxe para agrupar dados é a seguinte:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Nota
AGG_FUNC
significa funções agregadoras comoMAX
,MIN
,COUNT
, etc.
Esta sintaxe existe para encontrar determinados valores utilizando funções agregadas em colunas específicas.
Vamos considerar outro exemplo: recebemos a tarefa de encontrar o departamento com o maior salário médio.
Para recuperar esses dados, precisamos agrupar os dados pela coluna department
e então usar a função AVG()
para calcular o salário médio:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
Nesta parte da seção, trabalharemos com o banco de dados do sistema de metrô de Montreal, que contém a tabela metro_travel_time
.
Esta tabela conterá informações sobre a linha da estação (line_name
), seu nome (station_name
) e o tempo necessário para um trem viajar de uma estação para a próxima (time_to_next_station
).
Veja como é essa tabela e a visualização dos dados nela:
Como pode ser observado, esta não é uma tabela complexa. Vamos analisar onde podemos utilizar agrupamento aqui.
A opção mais evidente é agrupar pelas cores das linhas do metrô. Isso significa que podemos agregar os dados, agrupando-os pela cor da linha do metrô.
Alias
Nos exercícios, você frequentemente utilizará um conceito chamado alias. Um alias é basicamente um "apelido" para uma coluna recuperada com uma instrução SELECT
. Ele é especificado utilizando a seguinte sintaxe:
SELECT column AS alias
Um alias afeta apenas como a coluna aparece na resposta.
Por exemplo, em vez de MAX(time)
, a coluna pode ser chamada de max_time
se você atribuir esse alias. Isso torna a saída mais legível e clara.
Swipe to start coding
Sua tarefa é encontrar o maior tempo até a próxima estação em cada linha. Isso nos permitirá determinar o maior tempo de viagem entre estações para cada linha do metrô. Para isso, utilize a função MAX()
e atribua o alias max_time
, agrupando os dados pela coluna line_name
.
Instruções Resumidas
- Recupere a coluna
line_name
e o valor máximo da colunatime_to_next_station
. - Adicione o alias
max_time
para o valor máximo. - Agrupe os dados pela coluna
line_name
.
Após concluir esta tarefa, clique no botão abaixo do código para verificar sua solução.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
What are some other aggregate functions I can use with GROUP BY?
Can you explain how GROUP BY works with multiple columns?
Can you show an example using the Montreal Metro table?
Awesome!
Completion rate improved to 4
Cláusula Group By
Deslize para mostrar o menu
Bem-vindo ao curso de SQL Intermediário!
Na primeira seção, vamos explorar como agrupar e agregar dados em nossas tabelas.
Vamos entender o que significa "agrupar dados" usando um exemplo simples de uma tabela de funcionários:
Agrupando Dados
Temos a tarefa de descobrir o número de funcionários em cada departamento. Para isso, vamos agrupar os dados pela coluna department
e utilizar agregação com a função COUNT(*)
.
Veja como será a implementação:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Como você pode ver, a sintaxe para agrupar dados é a seguinte:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Nota
AGG_FUNC
significa funções agregadoras comoMAX
,MIN
,COUNT
, etc.
Esta sintaxe existe para encontrar determinados valores utilizando funções agregadas em colunas específicas.
Vamos considerar outro exemplo: recebemos a tarefa de encontrar o departamento com o maior salário médio.
Para recuperar esses dados, precisamos agrupar os dados pela coluna department
e então usar a função AVG()
para calcular o salário médio:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
Nesta parte da seção, trabalharemos com o banco de dados do sistema de metrô de Montreal, que contém a tabela metro_travel_time
.
Esta tabela conterá informações sobre a linha da estação (line_name
), seu nome (station_name
) e o tempo necessário para um trem viajar de uma estação para a próxima (time_to_next_station
).
Veja como é essa tabela e a visualização dos dados nela:
Como pode ser observado, esta não é uma tabela complexa. Vamos analisar onde podemos utilizar agrupamento aqui.
A opção mais evidente é agrupar pelas cores das linhas do metrô. Isso significa que podemos agregar os dados, agrupando-os pela cor da linha do metrô.
Alias
Nos exercícios, você frequentemente utilizará um conceito chamado alias. Um alias é basicamente um "apelido" para uma coluna recuperada com uma instrução SELECT
. Ele é especificado utilizando a seguinte sintaxe:
SELECT column AS alias
Um alias afeta apenas como a coluna aparece na resposta.
Por exemplo, em vez de MAX(time)
, a coluna pode ser chamada de max_time
se você atribuir esse alias. Isso torna a saída mais legível e clara.
Swipe to start coding
Sua tarefa é encontrar o maior tempo até a próxima estação em cada linha. Isso nos permitirá determinar o maior tempo de viagem entre estações para cada linha do metrô. Para isso, utilize a função MAX()
e atribua o alias max_time
, agrupando os dados pela coluna line_name
.
Instruções Resumidas
- Recupere a coluna
line_name
e o valor máximo da colunatime_to_next_station
. - Adicione o alias
max_time
para o valor máximo. - Agrupe os dados pela coluna
line_name
.
Após concluir esta tarefa, clique no botão abaixo do código para verificar sua solução.
Solução
Obrigado pelo seu feedback!
Awesome!
Completion rate improved to 4single