Редакция SQL- запроса.( JOIN, WHERE, GROUP BY, ORDER BY)
Определить, сколько потратил в 2005 году каждый из членов семьи?
Поля в результирующей таблице:member_name,status, costs
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
