我有以下几列一个表的最佳SQL:究竟是什么情景
Team
Region
Person
Name
,我想一个SQL报告,以产生一排为每个团队/地区(GROUPBY队,区)组合并向我显示该团队和地区的总人数列。一个建议是让一列值为1的列给他们在这些列上做一笔总和,但必须有一个更简单的解决方案。我怎么能指望这个输出中的人?
我有以下几列一个表的最佳SQL:究竟是什么情景
Team
Region
Person
Name
,我想一个SQL报告,以产生一排为每个团队/地区(GROUPBY队,区)组合并向我显示该团队和地区的总人数列。一个建议是让一列值为1的列给他们在这些列上做一笔总和,但必须有一个更简单的解决方案。我怎么能指望这个输出中的人?
select
Team,
Region,
count(distinct Person)
from mytable
group by 1,2
select Team,
Region,
count(*) as PersonCount
from YourTable
group by Team, Region
SELECT Team, Region, COUNT(*)
FROM Table
GROUP BY Team, Region
应该工作得很好,除非我失去了一些东西。
select Team, Region, Count(Team) as PeopleCount
from YourTable
group by Team, Region
应该这样做。请注意,有些人可能会提示Count(全部)。不习惯使用Count(全部)IMO是一个不好的习惯。如果您的表中有一个索引列,则总是在Count()中使用该列。然后你的查询将会快得多,因为依赖于索引创建的可能性,你的查询可能最终只使用索引而不是触摸表。
我个人比较喜欢命名我的分组(比如“团队,地区”而不是“1,2”)。 – AllenG