我如何编写一个查询来显示我的 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
我有一个 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