Кирилл Демченко
Ученик
(165)
1 год назад
SELECT
CASE
WHEN total < 1 THEN 'low cost'
ELSE 'high cost'
END,
SUM(total)
FROM invoice
WHERE billing_postal_code IS NOT NULL
GROUP BY
CASE
WHEN total < 1 THEN 'low cost'
ELSE 'high cost'
END;
Иван ЛариковУченик (121)
1 год назад
Кирилл, добрый день. Не могу понять почему у меня в отличие от твоего кода в результате добавляется еще одна строчка к двум с low и high?
SELECT SUM(total)
CASE
WHEN total < 1 AND billing_postal_code IS NOT NULL THEN 'low cost'
WHEN total >= 1 AND billing_postal_code IS NOT NULL THEN 'high cost'
END
FROM invoice
GROUP BY CASE
WHEN total < 1 AND billing_postal_code IS NOT NULL THEN 'low cost'
WHEN total >= 1 AND billing_postal_code IS NOT NULL THEN 'high cost'
END
Владимир СергеевичУченик (102)
4 недели назад
Точно, спасибо. Я догадывался, что ругается на порядок столбцов в ответе, но не знал как поменять. Оказывается выводимую функцию можно указывать после конструкции CASE. Такого в теории не было, но можно было бы и догадаться.
заказы на сумму меньше одного доллара получат категорию 'low cost';
заказы на сумму от одного доллара и выше получат категорию 'high cost'.
Для каждой категории посчитайте сумму значений в поле total, но только для тех заказов, при оформлении которых указан почтовый код. В итоговую таблицу должны войти только два поля.