Редакция SQL- запроса.( JOIN, WHERE, GROUP BY, ORDER BY)

Определить, сколько потратил в 2005 году каждый из членов семьи?

Поля в результирующей таблице:member_name,status, costs

ERD диаграмма

SELECT member_name, status, SUM (Payments.unit_price) AS costs FROM FamilyMembers
LEFT JOIN Payments ON FamilyMembers.member_id = Payments.family_member
WHERE Payments.date BETWEEN "2005-01-01T00:00:00.000Z" AND "2005-12-31T00:00:00.000Z"
GROUP BY Payments.family_member
ORDER BY costs;

Этот код выдает правильный результат запроса,однако сайту не нравится подобный код,где ошибка?

ЭТО ССЫЛКА НА САЙТ С ЗАДАНИЕМ


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

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

Сколько потратил в 2005 году каждый из членов семьи?
Поля в результирующей таблице:member_name,status, costs

unit_price - цена единицы товара, её нужно умножить на количество (amount)

SELECT fm.member_name, fm.status, SUM(p.amount*p.unit_price) as costs
FROM FamilyMembers as fm
JOIN Payments as p ON p.family_member = fm.member_id
WHERE YEAR(p.date) = 2005
GROUP BY fm.member_id, fm.member_name, fm.status
→ Ссылка
Автор решения: n1ckgorbachev

Мой вариант решения этого задания с сайта.

WITH report AS (
    SELECT  member_name, 
            status, 
            good_name, 
            SUM(amount*unit_price) AS costs 
    FROM FamilyMembers JOIN Payments
    ON member_id = family_member
    JOIN Goods ON good_id = good
    WHERE member_name LIKE "%Quincey" 
    AND date LIKE "2005-07%" 
    OR date LIKE "2005-08%"
    OR date LIKE "2005-09%"
    GROUP BY member_name, status, good_name
    ORDER  BY member_name, costs DESC
)
SELECT * FROM report 
UNION 
SELECT NULL, NULL, "Total:", SUM(costs) FROM report 
→ Ссылка