Używanie CTE w Redshift

Wprowadzenie do Redshift

Jason Myers

Principal Architect

Wspólne wyrażenia tabelowe (CTE)

  • Tymczasowy zestaw wyników
  • Upraszczają zapytania
  • Alternatywa dla podzapytań
Wprowadzenie do Redshift

Struktura podzapytania i CTE

SELECT division_name,
       revenue_total
       -- Subquery for top 10 divions by revenue
  FROM (SELECT division_id,
               SUM(revenue) AS revenue_total
          FROM orders
         GROUP BY division_id
         ORDER BY revenue_total DESC
         LIMIT 10) top_ten_divisions_by_rev
 WHERE revenue_total > 100000; 
-- CTE for top 10 divions by revenue
WITH top_ten_divisions_by_rev AS (
  SELECT division_id,
         SUM(revenue) AS revenue_total
    FROM orders
   GROUP BY division_id
   ORDER BY revenue_total DESC
   LIMIT 10)

-- Main query SELECT division_id, revenue_total -- FROM our CTE FROM top_ten_divisions_by_rev WHERE revenue_total > 100000;
Wprowadzenie do Redshift

Wiele CTE

-- Top 10 divisions by revenue CTE
WITH top_ten_divisions_by_rev AS(
  SELECT division_id,
         SUM(revenue) AS revenue_total
    FROM orders
   GROUP BY division_id
   ORDER BY revenue_total DESC
   LIMIT 10),

-- Division ID and Name CTE division_names AS( SELECT id AS division_id, name AS division_name FROM divisions)
-- Main query
SELECT division_name,
       revenue_total
       -- FROM Top 10 CTE
  FROM top_ten_divisions_by_rev
  -- Joining so we can use the division name
  JOIN division_names USING (DIVISION_ID)
 WHERE revenue_total > 100000;
Wprowadzenie do Redshift

Wiele CTE, łączenie CTE

```sql
-- Selecting the division names
WITH division_names AS(
  SELECT id AS division_id,
         name AS division_name
    FROM divisions),
-- Selecting the top ten divisions by revenue
top_ten_divisions_by_rev AS(
  SELECT division_name,
         SUM(revenue) AS revenue_total
    FROM orders
    -- Joining in the division_names CTE
    JOIN divisions USING (division_id)
   GROUP BY division_name
   ORDER BY revenue_total DESC
   LIMIT 10);

Prawo Kernighana

Każdy wie, że debugowanie jest dwukrotnie trudniejsze niż pisanie programu. Jeśli więc piszesz kod tak sprytnie, jak tylko potrafisz, to jak zamierzasz go potem debugować?

Wprowadzenie do Redshift

Wydajność CTE

  • Tak samo jak podzapytania
  • Lepsze niż podzapytania przy wielokrotnym użyciu

Kod SQL a kolejność wykonania

Wprowadzenie do Redshift

Czas na ćwiczenia!

Wprowadzenie do Redshift

Preparing Video For Download...