mysql カウントに奇妙な問題があります。実行すると
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)
私は得る:
私は2つのレコードを持っているので、それは大丈夫です。
実行すると
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
ご覧のとおり、1行に0の値があるため、これは奇妙です。count distinct
私はそれがゼロ値を数えないことを知っています。すべての値をカウントしたい != 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 より大きいすべての重複値を区別して合計しないため、機能しません。2番目のケースでは、 1 と 0 だけを返します。
それで、誰かがそれを手伝ってくれますか?前もって感謝します。レオ