SQL Tutorial Avançado | Como usar CTE (Expressão de tabela comum)? 1/7

Поделиться
HTML-код
  • Опубликовано: 5 янв 2025

Комментарии • 13

  • @alexygimeneznogueiradagama8017
    @alexygimeneznogueiradagama8017 Год назад +3

    Muito bacana. Uma excelente alternativa ao CREATE TABLE #NameTable em ETL. Vlw professora

  • @nathancirillo786
    @nathancirillo786 17 дней назад

    Muito bom!!!

  • @clevenielsonvieira5905
    @clevenielsonvieira5905 Год назад +4

    Ótima didática. 🎉
    Parabéns!

  • @divulgaweb2391
    @divulgaweb2391 Год назад +2

    muito bom !

  • @brunobraga6916
    @brunobraga6916 7 месяцев назад +2

    Fantástico conteúdo 🎉

  • @saulofender10
    @saulofender10 7 месяцев назад +2

    Muito bom o vídeo e sua didática, gostei muito!

  • @pabloleonardo321
    @pabloleonardo321 11 месяцев назад +2

    Fugindo um pouco do assunto:
    Em 03:16, se JobTitle fosse uma chave candidata, seria correto assumir que não precisaríamos usar o groupby para a função de agregação? Pois o valores da couna seriam únicos.

  • @guilhermebueno4001
    @guilhermebueno4001 Год назад +4

    Muito bom o vídeo!

  • @rodolpho3526
    @rodolpho3526 Год назад +4

    Olá!
    Muito bom o seu vídeo. Bem, por mais que eu tenha estudado e "entendido" os motivos da CTEs, ainda não consigo imaginar a diferença dela de uma simples consulta no select sem que eu faça uma view.
    Digamos que eu faça esse select aí, mas não crie view. Basta eu chamar o select a hora que eu quiser.
    Por isso que eu não consigo entender ainda a utilidade da cte, mesmo sabendo que ela é necessária para quem entendeu.
    Uma coisa que eu vi da cte que é bom, é não precisar fazer Join. Você junta duas tabelas sem essa necessidade com o comando Union, algo assim.

    • @drlucienegomes
      @drlucienegomes  Год назад +6

      @Rodolpho, excelente comentario.
      A CTE e usada quando voce quer escrever uma consulta mais legivel, simples assim! Pense numa situacao em que voce precise referenciar uma subconsulta varias vezes na consulta principal, exemplo abaixo.
      WITH sales_cte AS (
      SELECT salesperson_id, SUM(sale_amount) AS total_sales
      FROM sales
      GROUP BY salesperson_id
      )
      SELECT salesperson_id, total_sales,
      total_sales * 0.1 AS commission
      FROM sales_cte
      WHERE total_sales > 1000;
      Neste exemplo referenciamos 'total_sales' varias vezes na consulta principal (2 vezes no SELECT e 1 vez no WHERE). Se nao tivessemos criado a sales_cte, teriamos que escrever SUM(sale_amount) varias vezes no SELECT statement. Com a CTE, nós a referenciamos SUM(sale_amount) uma única vez na CTE e, em seguida, usamos a CTE na consulta principal.
      Ficou claro pra voce?
      CTE vs View
      CTE e Views tem abordagens diferentes para lidar com consultas repetitivas. As Views são permanentes, pois são OBJETOS no banco de dados e podem ser referenciadas por VARIAS consultas ao longo do tempo. As CTEs são usadas em consultas mais simples e que precisam ser resolvidas rapidamente. Views são usadas em consultas mais complexas e que precisam ser referenciadas várias vezes ao longo do tempo.
      Deixe-me saber se ficou claro.
      Espero ter lhe ajudado!🙂

    • @osoriomatucurane9511
      @osoriomatucurane9511 Год назад +1

      ​@@drlucienegomes, excelente ajudou bastante quanto a funcionalidade ou utilidade da cte. Realmente o código tornou se muito bem legível. Em analise de dados com Pandas no Python or Dplyr no R, temos sempre a possibilidade de armazenar como objectos (com operador de assignment), os resultados obtidos duma execução do bloco de código/instrução, e chamar posteriormente para visualizar os resultados, reutilizar para mais análises , etc,.....

  • @guilhermesilvamendes4780
    @guilhermesilvamendes4780 Год назад +3

    Eu consigo fazer duas CTE´s na mesma consulta?

    • @drlucienegomes
      @drlucienegomes  Год назад +5

      Você certamente pode ter vários CTEs em uma única expressão de consulta. Você só precisa separá-los com uma vírgula. Aqui está um exemplo. No exemplo abaixo, há dois CTEs. Um é denominado CategoryAndNumberOfProducts e o segundo é denominado ProductsOverTenDollars.
      WITH CategoryAndNumberOfProducts (CategoryID, CategoryName, NumberOfProducts) AS
      (
      SELECT
      CategoryID,
      CategoryName,
      (SELECT COUNT(1) FROM Products p
      WHERE p.CategoryID = c.CategoryID) as NumberOfProducts
      FROM Categories c
      )
      , ProductsOverTenDollars (ProductID, CategoryID, ProductName, UnitPrice) AS
      (
      SELECT
      ProductID,
      CategoryID,
      ProductName,
      UnitPrice
      FROM Products p
      WHERE UnitPrice > 10.0
      )
      SELECT c.CategoryName, c.NumberOfProducts,
      p.ProductName, p.UnitPrice
      FROM ProductsOverTenDollars p
      INNER JOIN CategoryAndNumberOfProducts c ON
      p.CategoryID = c.CategoryID
      ORDER BY ProductName