数量和条件导致性能问题?

时间:2014-03-19 20:37:50

标签: sql join sql-server-2008-r2 sql-server-2012 temp

我正在处理一百万个数据行表。表格如下所示

Departement    year Candidate   Spent  Saved 

Electrical     2013   A          50     50
Electrical     2013   B          25     50
Electrical     2013   C          11     50
Electrical     2013   D          25     0
Electrical     2013   Dt          86     50
Electrical     2014   AA         50     50
Electrical     2014   BB         25     0
Electrical     2014   CH         11     50
Electrical     2014   DG         25     0
Electrical     2014   DH         0      50
Computers      2013   Ax         50     50
Computers      2013   Bc         25     50
Computers      2013   Cx         11     50
Computers      2013   Dx         25     0
Computers      2013   Dx         86     50

我正在寻找下面的输出。

Departement    year   NoOfCandidates    NoOfCandidatesWith50$save      NoOfCandidatesWith0$save
Electrical     2013      5                    4                              1                       
Electrical     2014      5                    3                              2
Computers      2013      5                    4                              1

我正在使用#TEMP表进行条件和最后左外连接的每个计数。所以我需要更多的时间。 有没有什么方法可以让我在上面的表中表现得更好。 提前致谢。

1 个答案:

答案 0 :(得分:2)

您希望将其作为单个聚合查询执行此操作。不需要临时表:

select department, year, count(*) as NumCandidates,
       sum(case when saved = 50 then 1 else 0 end) as NumCandidatesWith50Save
       sum(case when saved = 0 then 1 else 0 end) as NumCandidatesWith00Save
from table t
group by department, year
order by 1, 2;