理想情况下,您应该有一个专门的卖家表格,您希望将其显示在您的报告中。没有这个,我们可以使用包含所有卖家名称的内联联合子查询。
SELECT t.seller,COALESCE(SUM(s.amount),0) AS total_sales
FROM
(
SELECT 'Alice' AS seller UNION ALL
SELECT 'Bob' UNION ALL
SELECT 'James'
) t
LEFT JOIN sales s
ON s.seller = t.seller
GROUP BY
t.seller;
,
您可以使用 UNION:
WITH people AS(
SELECT 'alice' as person
UNION ALL SELECT 'bob'
UNION ALL SELECT 'james'
)
SELECT * FROM people LEFT JOIN sales ON people.person = sales.seller
现在您可以像使用表格一样使用 people
。对左连接产生的空值进行分组和求和将导致 james 为零
,
嗯。 . .如果您需要对销售人员进行硬编码,那么您可能已经认识了新的销售人员。如果是这种情况,您可以使用 union all
:
select seller,sum(sales)
from sales
group by seller
union all
select 'James',0;
如果您不想列出所有销售人员,但有一个新销售人员的超级列表,您也可以使用 full join
:
select seller,coalesce(sum(s.sales),0)
from sales s full join
(select 'James' as seller union all
select 'Bob' as seller
) news
using (seller);
如果您有很长的 sellers
列表并且不想列出所有这些,这会很方便。
本文链接:https://www.f2er.com/6115.html