J'ai une table avec une colonne qui permet aux nulls. Si la valeur est null, elle est incomplète. Je veux calculer le pourcentage complet.
Peut-il être fait dans MySQL via SQL ou dois-je obtenir les entrées totales et les entrées NULL totales et calculer le pourcentage sur le serveur? P>
de toute façon, je suis très confus sur la façon dont j'ai besoin Pour aller séparer la variable_value afin que je puisse obtenir ses résultats totaux et ses résultats nuls totaux. P>
SELECT
games.id
FROM
games
WHERE
games.category_id='10' AND games.variable_value IS NULL
3 Réponses :
Lorsque vous utilisez "Compte" avec un nom de colonne, les valeurs NULL ne sont pas incluses. Donc, pour obtenir le comte ou le cent non NULL, faites-le simplement ...
SELECT count(1) as TotalAll, count(variable_value) as TotalNotNull, count(1) - count(variable_value) as TotalNull, 100.0 * count(variable_value) / count(1) as PercentNotNull FROM games WHERE category_id = '10'
+1: C'était mon idée trop - colonne calculée, divisant le montant par le nombre d'instances non nulles. Je pensais somme (coalesce (valeur, 0) / compte (...) code> moi-même ...
SELECT
SUM(CASE WHEN G.variable_value IS NOT NULL THEN 1 ELSE 0 END)/COUNT(*) AS pct_complete
FROM
Games G
WHERE
G.category_id = '10'
You might need to do some casting on the SUM() so that you get a decimal.
Ouais, je lui ai donné un +1 aussi. J'aime que les agrégats sur NULL peuvent conduire à un code plus concis, bien que par défaut quand je commence à taper je vais pour Verbose :)
Pour compter le nombre d'entrées correspondant à votre instruction WHERE, utilisez Comptez (*)
c | isnull ============== 12 | 1 193 | 0
Pouvez-vous nous donner le schéma de la table?