Mysql 如何使用Group By和整个列计算Distinct

Mysql 如何使用Group By和整个列计算Distinct,mysql,sql,Mysql,Sql,我很难说出我需要什么/搜索结果的措辞,所以如果这是一个愚蠢的问题/以前已经回答过,我深表歉意。我正在尝试用SQL为如下表编写查询: Country Unique_ID US 123 US 124 UK 125 Australia 126 将输出下表: Country Count_Distinct US 2 UK 1 Australia 1 All 4 我知道我可以选择co

我很难说出我需要什么/搜索结果的措辞,所以如果这是一个愚蠢的问题/以前已经回答过,我深表歉意。我正在尝试用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代码以获得“全部”编号。我不知道如何编写一个查询来获得以下输出,这不是两个单独的查询

如果您需要信息或澄清,请让我知道。谢谢

使用:

如果需要文本“All”(默认情况下,国家/地区的
null
),请将其包装在另一个查询中,以将null更改为“All”:

使用:

如果需要文本“All”(默认情况下,国家/地区的
null
),请将其包装在另一个查询中,以将null更改为“All”:


你能试试这个吗

选择国家/地区、计数(不同的唯一\u id)作为计数不同 从桌子上
分组汇总(国家)

请尝试以下方法:

选择国家/地区、计数(不同的唯一\u id)作为计数不同 从桌子上
按汇总分组(国家)

因此,如果在您的示例中,如果USA的ID是123和123,而不是123和124,那么“Count Distinct”只能是1而不是2,对吗?@kbball这就是我的解释,但是列名
Unique_ID
表明不可能重复。将
distinct
添加到计数中不会有什么坏处,但会产生更多的代码噪音…因此,如果在您的示例中,如果USA的ID是123和123,而不是123和124,“count distinct”将仅为1而不是2,对吗?@kbball我就是这样解释的,但列名
Unique\u ID
表明不可能重复。将
distinct
添加到计数中不会有什么坏处,但会产生更多的代码噪音…您缺少与以前一样的计数_Distinct@kbball“AS”是可选的。我更喜欢少点噪音。你和以前一样错过了计数_Distinct@kbball“AS”是可选的。我喜欢低噪音。
select Country, count(distinct Unique_ID) Count_Distinct
from mytable
group by Country
with rollup
select coalesce(Country, "All") Country, Count_Distinct
from (
    select Country, count(distinct Unique_ID) Count_Distinct
    from mytable
    group by Country
    with rollup
) x