나는 mysql count에 이상한 문제가있다. 내가다시 mysql "count distinct"
SELECT a.inc AS inc,
a.cls AS cls,
a.ord AS ord,
a.fam AS fam,
a.subfam AS subfam,
a.gen AS gen,
aspec AS spec,
asubspec AS subspec
FROM a
WHERE (ainc = 11)
를 실행하면 내가 얻을 :
을 나는이 개 기록을 가지고 있기 때문에 즉, 괜찮습니다. 내가
SELECT COUNT(DISTINCT a.inc) AS inc,
COUNT(DISTINCT a.cls) AS cls,
COUNT(DISTINCT a.ord) AS ord,
COUNT(DISTINCT a.fam) AS fam,
COUNT(DISTINCT asubfam) AS subfam,
COUNT(DISTINCT a.gen) AS gen,
COUNT(DISTINCT a.spec) AS spec,
COUNT(DISTINCT a.subspec) AS subspec
FROM a
WHERE (a.inc = 11)
GROUP BY a.inc
을 실행하면
나는
확보하고 gen, spec and subspec
한 행에 0 값을 보는 바와 같이 있기 때문에 그 이상한. count distinct
은 0 값을 계산하지 않는다는 것을 알고 있습니다. ! 나는 모든 값을 계산 = 0 내가
`1 | 2 | 2 | 2 | 2 | 1 | 1 | 1 |`
을 얻으려면 고유 한 카운트 후 나는 또한 시도하려는 :
SELECT COUNT(DISTINCT a.inc) AS inc,
SUM(if(a.cls <> 0, 1, 0)) AS cls,
SUM(if(a.ord <> 0, 1, 0)) AS ord,
SUM(if(a.fam <> 0, 1, 0)) AS fam,
SUM(if(a.subfam <> 0, 1, 0)) AS subfam,
SUM(if(a.gen <> 0, 1, 0)) AS gen,
SUM(if(a.spec <> 0, 1, 0)) AS spec,
SUM(if(a.subspec <> 0, 1, 0)) AS subspec
FROM a
GROUP BY a.inc
및
SELECT COUNT(DISTINCT a.inc) AS inc,
SUM(DISTINCT if(a.cls <> 0, 1, 0)) AS cls,
SUM(DISTINCT if(a.ord <> 0, 1, 0)) AS ord,
SUM(DISTINCT if(a.fam <> 0, 1, 0)) AS fam,
SUM(DISTINCT if(a.subfam <> 0, 1, 0)) AS subfam,
SUM(DISTINCT if(a.gen <> 0, 1, 0)) AS gen,
SUM(DISTINCT if(a.spec <> 0, 1, 0)) AS spec,
SUM(DISTINCT if(a.subspec <> 0, 1, 0)) AS subspec
FROM a
GROUP BY a.inc
을하지만 먼저 때문에 작동하지 않습니다 접근법은 뚜렷한 것을 만들지 않고 0보다 큰 모든 중복 값을 합산합니다. 두 번째 경우에는 단지 1과 0을 제공합니다.
누군가가 나를 도와 줄 수 있습니까? 미리 감사드립니다. 레오
은 무엇하게 당신이 DISTINCT 생각 0 값을 계산하지 않습니다 :
(나는 또한 의해 그룹, 도움이되지 않았다 제거) 이런 식으로 뭔가를 시도? _NULL_ 값은 계산하지 않지만 NULL은 0과 다릅니다. – Barmar