我如何编写一个查询来显示我的 table 中名称包含 len == 1 的记录的百分比?

How can I write a query that shows the percentage of records in my table that has name that contains len == 1?

我有一个 table 下面的候选人。

我试图找出其中名称长度等于 1 的记录的百分比。

到目前为止我试过了..但我无法让它给我一个百分比值。

 select T.N/T.D  from (

 select (select count(1) from Candidate where len(rtrim(LTRIM(name))) = 1 ) as N
 , 
 count(*) as D
 from Candidate ) T

此外,这是最好的方法吗?有更好的方法吗?

谢谢!

您可以使用条件聚合avg()

例子

Declare @YourTable Table ([Name] varchar(50))  Insert Into @YourTable Values 
 ('A')
,('B')
,('C')
,('D')
,('E')
,('bob')
,('bobby')
,('zac')
,('jack')
,('noname')
 
Select avg( case when len(Name)=1 then 1.0 else 0 end)
 from @YourTable

结果

0.500000