Requete compliquée (pour moi)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requete compliquée (pour moi)

par Augure » 13 juil. 2005, 22:39

Je suppose que tu connais la liste de toutes tes colonnes

1/ Pour le taux par colonne

Code : Tout sélectionner

select ( 1-(count(*)-count(col1))/count(*) ) * 100 ) AS 'Tx_pertinence_col1' , ( 1-(count(*)-count(col2))/count(*) ) * 100 ) AS 'Tx_pertinence_col2' , ( 1-(count(*)-count(col3))/count(*) ) * 100 ) AS 'Tx_pertinence_col3' , ( 1-(count(*)-count(col4))/count(*) ) * 100 ) AS 'Tx_pertinence_col4' from MaTable


count(*) => nombre total de lignes
count(col1) => nombre total de lignes ayant une valeur différente de NULL dans la colonne col1
Donc
count(*)-count(col1) => Nombre de ligne ayant la valeur NULL dans col1
count(*)-count(col1) / count(*) => Ratio de ligne ayant la valeur NULL dans col1
Notre unvivers étant dans ce cas binaire et égale à 1
1 - ( count(*)-count(col1) / count(*) ) => ratio de ligne non NULL

Et puis *100 pour transformer Ration en %
2/ Si tu veux qu'un seul tx pour toute ta table

Code : Tout sélectionner

select ( ( 1-(count(*)-count(col1))/count(*) ) * 100 ) + ( 1-(count(*)-count(col2))/count(*) ) * 100 ) + ( 1-(count(*)-count(col3))/count(*) ) * 100 ) + ( 1-(count(*)-count(col4))/count(*) ) * 100 ) ) / 4 from MaTable

par Paul59 » 13 juil. 2005, 17:01

Ben pour les champs nulls de ma base, il fo connaitre le contexte

je fais un annuaire en ligne et je voudrais afficher en temps réel ce que j'appelle le "coefficient de pertinence" de la base
c'est à dire le nombre de champs vides par rapport aux nombre de champs contenants une valeur si tous les membres de l'annaire étaient à jour

par Cyrano » 12 juil. 2005, 20:08

Ça va être difficile de simplement faire un count(). à première vue, tu vas devoir faire un count sur les colonnes avec des clauses WHERE pour chaque colonne...

Ceci dit, ça veut aussi dire que ta base est mal conçue. Quand on conçoit une base de données, on fait en sorte pour l'efficacité du système de limiter au maximum les possibilités de champs contenant des valeurs NULL

Donc il faudra peut-être bien revoir la structure générale de la base pour séparer tes tables en différentes entités distinctes.

par Paul59 » 12 juil. 2005, 19:32

Je souhaite compter le nombre de champs vides par enregistrements

Re: Requete compliquée (pour moi)

par ouckileou » 11 juil. 2005, 22:41

(Suis sous SQL & PHP)
SQL est un langage, pas un SGBD
tu peux être "sous" MySQL, Oracle, postgres...
Je souhaite réaliser une requete qui me permette de calculer le nombre de champs vides ou null par enregistrement

(je souhaite calculer un coefficient de "pertinence" de ma base)
je me permet de demander une précision sur ce que tu veux faire exactement :

pour une colonne, compter le nombre de valeur nulle dans ta table
ou pour une ligne (un enregistrement) compterle nombre de colonnes nulles ?

Requete compliquée (pour moi)

par Paul59 » 11 juil. 2005, 22:08

Bonjour.


(Suis sous SQL & PHP)

Je souhaite réaliser une requete qui me permette de calculer le nombre de champs vides ou null par enregistrement

(je souhaite calculer un coefficient de "pertinence" de ma base)


D'avance Merci