SQLзапрос на сравнение двух групп сложных выборок

Нужна помощь.

Не могу сформировать запрос в SQL.

Есть следующие таблицы:

Таблица t1 – таблица, с персональными данными о клиентах:

t1.account – номер счета;
t1.name – ФИО клиента;
t1.birthday – год рождения (DD/MM/YYYY).

Таблица t2 – таблица, с данными о заказах клиентов:

t2.account – номер счета;
t2.no_of_order – номер заказа;
t2.day_of_order – дата заказа (DD/MM/YYYY);
t2.invoice_amount – сумма заказа по ценам инвойса.

Необходимо написать запрос, результат которого – сравнение продаж клиентов в 2018 году против 2017 по группам за возрастом 18-23, 24-30, 31-45 и 46+.


Ответы (1 шт):

Автор решения: tcpack4

Примерно должен получится такой запрос:

select
sum(with_age.invoice_amount) sum_invoice_amount,
case
    when age >= 18 and age <= 23 then "18-23"
    when age >= 24 and age <= 30 then "24-30"
    when age >= 31 and age <= 45 then "31-45"
    when age >= 46 then "46+"
    else "N-A"
end age_category 

from (
    select
        t2.account,
        t2.invoice_amount,
    year(now()) - year(str_to_date(t1.birthday, '%d/%m/%Y')) age,
    from orders t2
    join accounts t1 on t1.account = t2.account
    where t2.day_of_order between '2017-01-01' and '2017-12-31'
) with_age
group by age_category
→ Ссылка