Pokud droid_v může být pouze 0, 1, 2, 3 nebo 4, pak COUNT(DISTINCT) nikdy nevrátí více než 5, protože existuje pouze pět možných hodnot. To chceš? Pokud ano, zkuste toto:
SELECT puid, COUNT(DISTINCT CASE WHEN droid_v > 0 THEN droid_v ELSE 0 END) - 1 AS droid /* -1 for the case where droid_v is 0 */
, COUNT(DISTINCT sig_v) AS sig
, SUM(NoExt) AS hits
Aktualizace: Jejda, je nám líto, výše uvedené není zcela v pořádku, protože nemusí být nula. Mělo by být:
SELECT puid, COUNT(DISTINCT CASE WHEN droid_v > 0 THEN droid_v END) AS droid
Pokud na druhou stranu chcete počet všech řádků, kde droid_v> 0, pak si myslím, že chcete toto:
SELECT puid, SUM(CASE WHEN droid_v > 0 THEN 1 ELSE 0 END) AS droid
, COUNT(DISTINCT sig_v) AS sig
, SUM(NoExt) AS hits
Doufám, že to pomůže.