首页 > 解决方案 > SQL Server:如何计算从前 50% 查询返回的记录

问题描述

如何获取前 50% 选择查询返回的记录数。

select top 50 percent * 
from Customers

我尝试使用以下查询

select count(*)/2 
from Customers

但它不准确,因为当表中的记录总数为 91 而 TOP 50% 查询返回 46 时,它将返回 45 条记录。

我需要一个查询,它可以告诉返回的记录数select TOP 50 percent * from Customers

标签: sql-servertsql

解决方案


你可以用子查询包装它:

SELECT COUNT(*) FROM (select TOP 50 percent * from Customers) s

或通过使用窗口计数:

select TOP 50 percent *, COUNT(*) OVER() AS cnt from Customers

推荐阅读