2011-07-15 262 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()中使用該列。然後你的查詢將會快得多,因爲依賴於索引創建的可能性,你的查詢可能最終只使用索引而不是觸摸表。