Aan de slagGa gratis aan de slag

Gegevens filteren met CTE's

Een van de meest effectieve manieren om een CTE te gebruiken, is je gegevens in de CTE filteren voordat je ze later in de query gebruikt. Zo verlaag je de totale kosten van de query, omdat er minder data in de uiteindelijke query terechtkomt. Met deze query vinden we de orderstatus van bestellingen met items waarvan de prijs hoger is dan $150.

Deze oefening maakt deel uit van de cursus

Introductie tot BigQuery

Cursus bekijken

Oefeninstructies

  • Maak een nieuwe CTE orders voor bestellingen met een prijs boven $150, en unnest order_items om de kolom price te vinden.
  • Join de resultaten van de CTE met de gegevensset ecomm_order_details om het aantal order_status te vinden en ze te aggregeren door de bestellingen in elke status te COUNTen.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

-- Add the correct items to finish our filtered CTE

-- Create a new CTE with the name orders
WITH ___ AS (
  SELECT order_id
  -- Add the correct column for the order item details
  FROM ecommerce.ecomm_orders, UNNEST(___) items
  -- Fill in the correct column for the item price 
  WHERE items.___ > 150
)

SELECT
	-- Aggregate to find the total number of orders
	___(order_id),
	-- Add the column for the status of the order
	___
FROM ecommerce.ecomm_order_details od
JOIN orders o USING (order_id)
GROUP BY order_status
Code bewerken en uitvoeren