Sql 获取每个类别类型计数的最佳方法
我在下面有一个查询,它从两个不同的表返回产品标识、产品名称和类别名称Sql 获取每个类别类型计数的最佳方法,sql,sql-server,Sql,Sql Server,我在下面有一个查询,它从两个不同的表返回产品标识、产品名称和类别名称 SELECT p.product_id, p.product_name, c.category_name FROM [BikeStore].[production].[products] p JOIN [BikeStore].[production].[categories] c ON p.category_id = c.category_id ORD
SELECT p.product_id,
p.product_name,
c.category_name
FROM [BikeStore].[production].[products] p
JOIN [BikeStore].[production].[categories] c
ON p.category_id = c.category_id
ORDER BY c.category_name
我想在每行旁边添加第四列,显示每个类别的数量
我写了如下这样的查询:
SELECT p.product_id,
p.product_name,
c.category_name,
(SELECT Count(*)
FROM [BikeStore].[production].[products] p1
JOIN [BikeStore].[production].[categories] c1
ON p1.category_id = c1.category_id
WHERE c1.category_id = c.category_id) AS totals
FROM [BikeStore].[production].[products] p
JOIN [BikeStore].[production].[categories] c
ON p.category_id = c.category_id
ORDER BY c.category_name
我不确定这是否是正确的方法。如果有更好的方法,请告诉我。您可以使用窗口功能:
SELECT p.product_id,
p.product_name,
c.category_name,
COUNT(*) OVER (PARTITION BY c.category_name)
FROM [BikeStore].[production].[products] p JOIN
[BikeStore].[production].[categories] c
ON p.category_id = c.category_id
ORDER BY c.category_name