Оптимизация запросов с помощью CTE
CTE также помогают оптимизировать запросы: они позволяют выполнить такие вычисления, как агрегации, до того как основной запрос начнёт работать с данными.
Например, вы хотите найти наибольшее количество платежей в зависимости от числа позиций в заказе. В этом упражнении вы увидите, как эффективно решить эту задачу с помощью CTE.
Это упражнение является частью курса
Введение в BigQuery
Инструкции к упражнению
- Добавьте нужные агрегатные функции в подзапрос и в основной запрос.
- Используйте
ARRAY_LENGTH, чтобы дважды обратиться к столбцуorder_itemsв основном запросе и определить количество позиций в каждом заказе.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
WITH payments AS (
SELECT
-- Use the correct aggregate to find the highest number of payments
___(payment_sequential) AS num_payments,
order_id
FROM ecommerce.ecomm_payments
-- Group the results by order
GROUP BY ___)
SELECT
-- Add the correct function to find the length or number of order items
___(o.order_items) AS num_items,
MAX(p.num_payments) AS max_payments
FROM ecommerce.ecomm_orders o
JOIN payments p
-- Add the correct keyword to join using the same column
___ (order_id)
-- Add the correct function to find the length or number of order items
GROUP BY ___(o.order_items)