1
resposta

[Dúvida] Objetivo em fazer a Subquery

Bom dia, tudo bem?

Desculpe, mas não entendi qual seria o objetivo em gerar a subquery e qual a diferença de uma para outra. Vi que o resultado foi de duas tabelas diferentes, mas não entendi como chegamos nele. Conseguem ajudar?

SELECT * FROM (SELECT gender, tripduration/60 as duration_minutes
FROM `bigquery-public-data`.new_york.citibike_trips citibike_trips) 
where duration_minutes <10
LIMIT 5;
with all_trips as (SELECT gender, tripduration/60 as duration_minutes
FROM `bigquery-public-data`.new_york.citibike_trips citibike_trips)
SELECT * FROM all_trips where duration_minutes <10
limit 5;
1 resposta

Olá Carolina, tudo bem com você?

A subquery, ou subconsulta, é uma consulta SQL aninhada dentro de outra consulta SQL. Ela permite que você use o resultado de uma consulta como entrada para outra. Isso é útil quando você precisa manipular seus dados de maneiras mais complexas.

No exemplo que você mostrou, a subquery foi usada para criar uma nova tabela temporária que contém apenas as colunas gender e duration_minutes da tabela citibike_trips. Essa nova tabela temporária foi então usada para selecionar todas as linhas onde duration_minutes é menor que 10.

A principal diferença entre as duas consultas que você postou é a maneira como a subquery é usada.

Na primeira consulta, a subquery é usada diretamente na cláusula FROM:

SELECT * FROM (SELECT gender, tripduration/60 as duration_minutes
FROM `bigquery-public-data`.new_york.citibike_trips citibike_trips) 
where duration_minutes <10
LIMIT 5;

No exemplo acima, a subquery está criando uma tabela temporária que é usada diretamente na consulta principal.

Na segunda consulta, a subquery é usada com a cláusula WITH para criar uma tabela temporária nomeada:

with all_trips as (SELECT gender, tripduration/60 as duration_minutes
FROM `bigquery-public-data`.new_york.citibike_trips citibike_trips)
SELECT * FROM all_trips where duration_minutes <10
limit 5;

Neste outro exemplo acima, a subquery está criando uma tabela temporária chamada all_trips que é então usada na consulta principal. A vantagem de usar a cláusula WITH é que ela permite que você reutilize a mesma subquery várias vezes em sua consulta principal, o que pode tornar sua consulta mais eficiente e mais fácil de ler e manter.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software