SQLLab
SQL-задача· 18 мин

Топ-покупатели

+65XP

Задание

Отдел лояльности хочет держать под рукой список активных покупателей — с количеством и суммой завершённых заказов, — чтобы использовать его в CRM-рассылках и определять кандидатов на повышение статуса лояльности. Эту выборку нужно оформить в виде представления v_top_customers, чтобы не пересобирать JOIN customers и orders каждый раз.

Техническое задание

Напишите запрос-основу для представления v_top_customers. Для каждого покупателя (таблица customers, JOIN с orders) выведите:

  • customer_id
  • full_name — first_name || ' ' || last_name
  • city
  • loyalty_tier
  • orders_count — количество завершённых заказов
  • total_spent — сумма total_amount по завершённым заказам
  • avg_order — средняя сумма завершённого заказа, округлённая до 2 знаков

Учитывайте только заказы со статусом completed, и включайте только покупателей, у которых есть хотя бы один такой заказ — покупатели без завершённых сделок не относятся к «топовым» и не нужны в этой витрине.

Отсортируйте по total_spent DESC, затем по customer_id — чтобы самые ценные покупатели были в начале списка, а порядок при равной сумме был предсказуемым.

Результат выполнения SQL-запроса
ER-диаграмма таблиц базы данных
Анализ плана выполнения запроса PostgreSQL

Результаты появятся здесь после выполнения запроса.