SQL Server 如何计算table_b中的列和主选择中的union?

jv4diomz  于 2023-01-25  发布在  其他
关注(0)|答案(1)|浏览(144)

我在下面写一个查询

SELECT sales_people_name 
,COUNT(amount_sales) AS total_sales
,SUM(price) AS total price
**mark1**

FROM order
group by sales_people_name

我的意图是在mark1上从一个名为“销售_shops”的表中添加一个nuw列,它可以计算商店所属销售人员的数量。
如何实现这一结果?
我试着把join留给table,但结果仍然不是我所需要的。

s1ag04yj

s1ag04yj1#

可以在SELECT语句中使用子查询来计算table_b中属于销售人员的商店数量,然后将其与主查询联合。下面是一个示例:

SELECT mark1.*, 
    (SELECT COUNT(*) FROM table_b WHERE sales_person = mark1.sales_person)             
as sale_shops
FROM mark1
UNION
SELECT mark2.*, 
    (SELECT COUNT(*) FROM table_b WHERE sales_person = mark2.sales_person) 
as sale_shops
FROM mark2

这将返回mark1和mark2表中的所有列,以及一个名为“销售_shops”的新列,该列包含属于table_b中销售人员的商店计数。
或者,您可以将table_b与mark1和mark2连接起来并使用COUNT()函数

SELECT mark1.*, COUNT(table_b.sales_person) as sale_shops
FROM mark1
LEFT JOIN table_b ON mark1.sales_person = table_b.sales_person
GROUP BY mark1.sales_person
UNION
SELECT mark2.*, COUNT(table_b.sales_person) as sale_shops
FROM mark2
LEFT JOIN table_b ON mark2.sales_person = table_b.sales_person
GROUP BY mark2.sales_person

相关问题