2008-09-26 3 views

답변

462

당신은 COUNT 집계 함수 내에서 DISTINCT 키워드를 사용할 수 있습니다

SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name 

이것은 해당 열의에만 고유 한 값을 계산합니다.

+2

깔끔한, 거기에 뚜렷한 키워드를 넣을 수 있는지 몰랐습니다. –

+10

또한 A 그룹 별 A, COUNT (DISTINCT B)를 사용하여 테이블 그룹에서 작동합니다. – tmanthey

+2

이 예를 여러 열에서 distinct로 확장 할 수 있습니까? – eugene

6
select Count(distinct columnName) as columnNameCount from tableName 
9
SELECT COUNT(DISTINCT column_name) FROM table as column_name_count; 

별개의 열을 계산 한 다음 별칭을 지정해야합니다. 이것은 별개의 수를 줄 것이다

select count(distinct my_col) 
     + count(distinct Case when my_col is null then 1 else null end) 
from my_table 
/
22

, null 값을 무시) (즉, 카운트주의 열 그룹.

+0

나는 정말로 당신의 성명서가 다음과 같이 말할 의도가 있다고 생각한다 :'my_col이 널, then else else my_col end' –

+0

명확성을 위해 :''my_col, COUNT (my_col) + COUNT (my_col이 NULL 일 때 END)를 My_Table에서 CountOf로 GROUP BY my_col''' –

+0

count (*)는 null을 포함합니다. – PragmaticProgrammer

9
select count(*) from 
(
SELECT distinct column1,column2,column3,column4 FROM abcd 
) T 

: 당신은 당신이 같은 까다로운 뭔가를 할 수 있습니다 만의 독특한 값으로 null을 허용 할 필요가 그래서 만약

126

이렇게하면 별개의 열 값과 각 값의 수를 확인할 수 있습니다. 나는 보통 두 가지 정보를 알고 싶다.

select distinct columnName, count(columnName) as CountOf from tableName group by columnName 
+42

'columnName'으로 그룹화했기 때문에 이미 고유 값을 한 번만 얻었고'distinct' 키워드는 여기에서 아무 것도하지 않습니다. 이를 사용하지 않고 쿼리를 실행하면 결과 집합이 완전히 동일합니다. – Antti29

-5

카운트 (별개의 ({필드 이름이}))

간단히 카운트 ({필드 이름이})이 테이블에 당신에게 모든 고유 값을 제공 중복됩니다. 그것은 (많은 사람들이 생각한 것처럼) 당신에게 테이블의 백작을주지 않을 것입니다. NOT 같은 테이블에서 카운트 (*) 등]

+2

아니요, 정확하지 않습니다. 'count (field)'는'field'가'not null' 인 행의 수를 반환합니다. – Antti29

8

COLUMN_NAME의 고유 값의 SQL 합 주파수에 의해 분류 :

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY 2 DESC; 
관련 문제