2011-07-15 227 views
0

我有以下几列一个表的最佳SQL:究竟是什么情景

Team 
Region 
Person 
Name 

,我想一个SQL报告,以产生一排为每个团队/地区(GROUPBY队,区)组合并向我显示该团队和地区的总人数列。一个建议是让一列值为1的列给他们在这些列上做一笔总和,但必须有一个更简单的解决方案。我怎么能指望这个输出中的人?

回答

1
select 
    Team, 
    Region, 
    count(distinct Person) 
from mytable 
group by 1,2 
+0

我个人比较喜欢命名我的分组(比如“团队,地区”而不是“1,2”)。 – AllenG

0
select Team, 
     Region, 
     count(*) as PersonCount 
from YourTable 
group by Team, Region 
0
SELECT Team, Region, COUNT(*) 
    FROM Table 
    GROUP BY Team, Region 

应该工作得很好,除非我失去了一些东西。

0
select Team, Region, Count(Team) as PeopleCount 
from YourTable 
group by Team, Region 

应该这样做。请注意,有些人可能会提示Count(全部)。不习惯使用Count(全部)IMO是一个不好的习惯。如果您的表中有一个索引列,则总是在Count()中使用该列。然后你的查询将会快得多,因为依赖于索引创建的可能性,你的查询可能最终只使用索引而不是触摸表。