sql >> Databáze >  >> RDS >> Mysql

MySQL – podmíněné COUNT s GROUP BY

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.



  1. Jak spouštět příkazy mysql z terminálu na instalaci MAMP?

  2. Extrakce podřetězců MySQL pomocí oddělovače

  3. Jak používat cizí klíč ve sqlite?

  4. Jak mohu vložit data do databáze MySQL?