2016-08-01 2 views
1

검색 결과를 말하고 표현하는 데 어려움을 겪고 있습니다. 그래서 바보 같은 질문 인 경우 사과드립니다. I는 다음과 같이 테이블에 대한 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

예를 들어, 미국의 ID가 123과 124 대신 123과 124 대신 "개수 고유"는 2 대신 1 일뿐입니다. – kbball

+0

@kbball 그게 내가 해석하는 방법이지만, 컬럼 이름'Unique_ID'는 중복이 불가능 함을 시사합니다. 카운트에'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)를 계산그룹별로 롤업 (국가)

관련 문제