Для каждой страны (поле billing_country) посчитайте минимальное, максимальное и среднее значение выручки из поля total. Назовите поля так: min_total, max_total и avg_total. Нужные поля для выгрузки хранит таблица invoice.
При подсчёте учитывайте только те заказы, которые включают более пяти треков. Стоимость заказа должна превышать среднюю цену одного трека. Используйте код, написанный в предыдущих заданиях.
Отсортируйте итоговую таблицу по значению в поле avg_total от большего к меньшему. Записи с одинаковым значением avg_total отсортируйте по названию страны в лексикографическом порядке.
SELECT billing_country,
MIN(total) AS min_total,
MAX(total) AS max_total,
AVG(total) AS avg_total
FROM invoice AS i
WHERE i.invoice_id IN (SELECT invoice_id
FROM invoice_line AS il
GROUP BY il.invoice_id
HAVING COUNT(track_id) > 5)
AND i.total > (SELECT AVG(unit_price)
FROM invoice_line AS il)
GROUP BY billing_country
ORDER BY avg_total DESC, billing_country;
Р
Результат
| billing_country | min_total | max_total | avg_total |
|---|---|---|---|
| Chile | 5.94 | 17.91 | 12.57 |
| Hungary | 5.94 | 21.86 | 12.2367 |
| Ireland | 5.94 | 21.86 | 12.2367 |
| Czech Republic | 5.94 | 25.86 | 12.07 |
Число подзапросов может быть неограниченным. Можно сочетать подзапросы во FROM и в WHERE, главное — не переборщить. Чем больше подзапросов, тем больше нервных клеток уходит на код.