Определите, летом какого года общая выручка в магазине была максимальной. Затем проанализируйте данные за этот год по странам. Выгрузите таблицу с полями:
country— название страны;total_invoice— число заказов, оформленных в этой стране в тот год, когда общая выручка за лето была максимальной;total_customer— число клиентов, зарегистрированных в этой стране.
Отсортируйте таблицу по убыванию значений в поле total_invoice, а затем добавьте сортировку по названию страны в лексикографическом порядке.
SELECT i.billing_country AS country,
COUNT(i.total) AS total_invoice,
с.total_customer
FROM invoice AS i
LEFT JOIN (SELECT country,
COUNT(customer_id) AS total_customer
FROM client
GROUP BY country) AS с ON i.billing_country=с.country
WHERE EXTRACT(YEAR FROM CAST(invoice_date AS date)) = (
--Год с максимальной выручкой летом
SELECT EXTRACT(YEAR FROM CAST(invoice_date AS date)) AS year
FROM invoice AS i
WHERE EXTRACT(MONTH FROM CAST(invoice_date AS date)) IN (6,7,8)
GROUP BY EXTRACT(YEAR FROM CAST(invoice_date AS date))
ORDER BY SUM(total) DESC
LIMIT 1)
GROUP BY i.billing_country,
с.total_customer
ORDER BY total_invoice DESC,
country;
Результат
| country | total_invoice | total_customer |
|---|---|---|
| USA | 19 | 13 |
| Canada | 11 | 8 |
| France | 8 | 5 |
Вы справились с очень большим и сложным запросом. Но уже в следующем уроке вы научитесь писать такие запросы проще.