2016-08-01 38 views
1

我很難說我需要什麼/措辭的搜索結果,所以道歉,如果這是一個愚蠢的問題/已被回答過。我試着寫在SQL查詢的表格,如下面:如何統計與整個列不同

Country Unique_ID 
US   123 
US   124 
UK   125 
Australia 126 

這將輸出如下表:

Country Count_Distinct 
US   2 
UK   1 
Australia 1 
All  4 

我知道我可以選擇countryid並計算不同國家代碼,我知道我可以統計不同的countryid代碼來獲得「全部」號碼。我無法弄清楚如何編寫查詢來獲得不是兩個單獨查詢的後續輸出。

如果您需要信息或澄清,請讓我知道。謝謝!

+1

所以如果在你的例子中,如果USA的ID是123和123,而不是123和124,那麼「Count Distinct」只會是1而不是2,對不對? – kbball

+0

@kbball這就是我解釋它的方法,但列名'Unique_ID'表明重複是不可能的。在count中加'distinct'不會有什麼影響,但它會產生更多的代碼噪聲... – Bohemian

回答

4

使用WITH ROLLUP

select Country, count(distinct Unique_ID) Count_Distinct 
from mytable 
group by Country 
with rollup 

如果你想要的文字「全部」(您得到了國家默認情況下null),敷在另一個查詢爲空更改爲「全部」:

select coalesce(Country, "All") Country, Count_Distinct 
from (
    select Country, count(distinct Unique_ID) Count_Distinct 
    from mytable 
    group by Country 
    with rollup 
) x 
+0

您在Count_Distinct之前缺少AS – kbball

+0

更好的辦法是使用ifnull(country,'All')'。不需要子查詢... – sgeddes

+0

@kbball「AS」是可選的。我更喜歡較少的噪音。 – Bohemian

0

能否請您試試這個:

選擇國家,計數(不同UNIQUE_ID)從表計數明顯 group by rollup(country)