Антон Машутов
Ученик
(108)
2 года назад
WITH report
AS (
SELECT member_name,
status,
good_name,
Payments.amount * Payments.unit_price AS costs
FROM FamilyMembers
inner JOIN payments
on member_id = family_member and member_name like '% Quincey' and date >= '2005-07-01'and date <= '2005-09-30'
inner JOIN Goods
on good = good_id
ORDER BY member_name
)
SELECT * FROM report
UNION
SELECT
member_name =NULL, -- можно просто NULL --
STATUS =NULL, -- можно просто NULL --
"Total:",
(SELECT DISTINCT SUM(costs) FROM report )
FROM report
ORDER BY CASE WHEN member_name IS NULL THEN 1 ELSE 0 END,member_name ASC, costs DESC
Данил Жданов
Ученик
(150)
1 год назад
Не знаю,насколько это актуально сейчас,но может другим поможет
with report as (
select member_name,
status,
good_name,
sum(amount*unit_price) costs
from FamilyMembers fm
join Payments p on fm.member_id=p.family_member
join goods g on g.good_id=p.good
where date between '2005-07-01' and '2005-09-30'
group by family_member,good_name
)
select * from report
union
select
member_name=null,
status=null,
'Total:', (SELECT SUM(costs) FROM report ) costs
FROM report
ORDER BY CASE WHEN member_name IS NULL THEN 1 ELSE 0 END,member_name ASC, costs DESC
На завершающем задании второго этапа я оказался в тупике, и ни кто не может мне подсказать, что я делаю не так, и как решить эту задачу. Искал помощи на форуме, но содержательного ответа не получил. Прошу содействия в решении задачи.
Текст задачи, запрос и результат, который поучился у меня и которого нужно достичь на скрин-шоте, приложенном к этому сообщению. Также, ниже продублировал свой запрос в печатном формате.
Не могу понять, что нужно дописать в запросе. Помогите решить задачу.
WITH report
AS (
SELECT
FamilyMembers.member_name,
FamilyMembers.status,
Goods.good_name,
SUM (Payments.amount * Payments.unit_price) AS costs
FROM FamilyMembers
INNER JOIN Goods ON FamilyMembers.member_id = Goods.good_id
INNER JOIN Payments ON FamilyMembers.member_id = Payments.payment_id
WHERE FamilyMembers.member_name LIKE '%Quincey' AND
Payments.date > '2005-06-01' AND Payments.date < '2005-10-01'
GROUP BY FamilyMembers.member_id)
--ORDER BY member_name ASC)
SELECT * FROM report
UNION
SELECT
member_name =NULL, --можно просто NULL --
STATUS =NULL, --можно просто NULL --
"Total:",
(SELECT DISTINCT SUM(costs) FROM report )
FROM report
ORDER BY CASE WHEN member_name IS NULL THEN 1 ELSE 0 END,member_name ASC, costs DESC