【发布时间】:2010-10-30 07:23:21
【问题描述】:
我想计算一个组中满足特定条件的项目占该组项目总数的比例。我已经解决了这个问题,但很想知道我的解决方案是否是最优的,因为在我的大型 (10m+) 数据集上查询需要很长时间。
这是我最简单的形式:
create table #tableA
(
id int IDENTITY(1,1),
groupid int,
flag bit,
CONSTRAINT [PK_TableA] PRIMARY KEY CLUSTERED
(
[id] ASC
)
)
insert into #tableA (groupid,flag) values (1,0),(1,0),(1,1),(2,0),(2,1)
select
a.groupid ,
cast(totalCount as float)/count(*) as ratio
from
#tableA a
join
(
select
groupid,
COUNT(*) totalCount
from
#tableA
where
flag=1
group by
groupid
) b on a.groupid=b.groupid
group by
a.groupid,
b.totalCount
drop table #tableA
有没有更有效的方法来编写这个查询?
【问题讨论】: