SQLPytanie 08 z 14
CTE — klienci z największą liczbą zamówień
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
CTE, czyli WITH, nadaje nazwę etapowi zapytania. Poniżej najpierw liczę zamówienia w przedziale, potem wybieram wszystkich współliderów.
SQL
-- orders(id, customer_id, created_at timestamp)
WITH totals AS (
SELECT customer_id, COUNT(*) AS order_count
FROM orders
WHERE created_at >= TIMESTAMP '2026-01-01'
AND created_at < TIMESTAMP '2026-02-01'
GROUP BY customer_id
)
SELECT customer_id, order_count
FROM totals
WHERE order_count = (SELECT MAX(order_count) FROM totals);Pułapka: pytam, czy „największe zamówienia” oznaczają liczbę, kwotę czy pojedynczy rekord. Półotwarty zakres obejmuje cały styczeń. CTE nie jest automatyczną gwarancją przyspieszenia ani materializacji.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.