[SQL] 조건과 고유 한 카운트
SQL조건과 고유 한 카운트
테이블이 같은 경우 내가 예를 들어, 특정 조건에 열 제목에서 별개의 항목 수를 계산하려면 :
tag | entryID
----+---------
foo | 0
foo | 0
bar | 3
나는 "태그 수"와 같은 고유 한 태그의 수를 계산하고 항목 ID> 같은 테이블에서 "긍정적 태그 수"와 같은 0 별개의 태그의 수를 계산하려면 어떻게해야합니까?
두 번째 테이블에서 I는 0보다 큰 ENTRYID에 해당 행을 선택한 곳 지금은 두 개의 서로 다른 테이블에서 계산하고 있습니다. 나는이 문제를 해결하기 위해보다 컴팩트 한 방법이 있어야한다고 생각합니다.
해결법
-
==============================
1.이 시도 할 수 있습니다 :
이 시도 할 수 있습니다 :
select count(distinct tag) as tag_count, count(distinct (case when entryId > 0 then tag end)) as positive_tag_count from your_table_name;
첫 번째 카운트 (별개은 ...) 간단합니다. 두 번째는, 때 절 ... 당신이 케이스를 사용하는 것을 제외하고, 실제로 처음과 동일, 다소 복잡한 보인다. 경우에 ... 때 절, 당신은 단지 양의 값을 필터링 할 수 있습니다. 제로 또는 음의 값은 널 (null)로 평가 될 것이며, 계산에 포함되지 않는다.
여기서주의 할 점은이 번 테이블을 읽어 수행 할 수 있다는 것입니다. 당신이 두 번 이상 동일한 테이블을 읽을 수있는 것 같다 때, 실제로 대부분의 시간에, 한 번 읽어 수행 할 수 있습니다. 결과적으로, 적은 I / O와 훨씬 빨리 작업을 완료합니다.
-
==============================
2.다음 문을보십시오 :
다음 문을보십시오 :
select distinct A.[Tag], count(A.[Tag]) as TAG_COUNT, (SELECT count(*) FROM [TagTbl] AS B WHERE A.[Tag]=B.[Tag] AND B.[ID]>0) from [TagTbl] AS A GROUP BY A.[Tag]
첫 번째 필드는 세 번째가 될 플러스는 전체 카운트 수있을 것이다 태그 될 것이다.
-
==============================
3.이 작업을 할 수 있습니다 :
이 작업을 할 수 있습니다 :
SELECT Count(tag) AS 'Tag Count' FROM Table GROUP BY tag
과
SELECT Count(tag) AS 'Negative Tag Count' FROM Table WHERE entryID > 0 GROUP BY tag
-
==============================
4.이것은 또한 작동 할 수 있습니다 :
이것은 또한 작동 할 수 있습니다 :
SELECT COUNT(DISTINCT T.tag) as DistinctTag, COUNT(DISTINCT T2.tag) as DistinctPositiveTag FROM Table T LEFT JOIN Table T2 ON T.tag = T2.tag AND T.entryID = T2.entryID AND T2.entryID > 0
당신은 왼쪽에있는 ENTRYID 조건이 있는지 만 0 ENTRYID이있는 모든 항목이 제대로 첫번째 DISTINCT에서 계산 얻을 있는지 확인하기 위해 where 절에서보다는 가입이 필요합니다.
-
==============================
5.코드 태그의 항목 ID의 고유 / 독특한 조합을 계산 [엔트리 ID]> 0
코드 태그의 항목 ID의 고유 / 독특한 조합을 계산 [엔트리 ID]> 0
select count(distinct(concat(tag,entryId))) from customers where id>0
출력에 그 고유 값들의 개수를 표시 도움이 되었기를 바랍니다
from https://stackoverflow.com/questions/14048098/count-distinct-with-conditions by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 널 (null)을 허용하지 않는 PostgreSQL 데이터베이스에 열을 추가 할 수 있습니까? (0) | 2020.07.20 |
---|---|
[SQL] 인덱스가 존재하지 않을 때 추가 최신 행 결정 [중복] (0) | 2020.07.20 |
[SQL] GRANT 모든 저장 프로 시저 실행을 (0) | 2020.07.20 |
[SQL] 나는 다른 데이터베이스 테이블에 하나의 데이터베이스와 삽입에서 포함 된 테이블을 복사하려면 (0) | 2020.07.20 |
[SQL] 소켓 '/tmp/mysql.sock'을 통해 지역의 MySQL 서버에 연결할 수 없습니다 (2) (0) | 2020.07.20 |