as tu bien mis le même prédicat pour les deux requêtes ?
est ce que ton champ null ou est ce qu'il s'agit d'une chaîne de caractère vide ? (ce n'est pas la même chose).
SELECT ((COUNT(1) * 100)/ (
SELECT COUNT(1)
FROM vente
WHERE produit IS NOT NULL AND produit <>'')) AS pct, produit
FROM vente
WHERE produit IS NOT NULL AND produit <>''
GROUP BY produit;
j'en profite pour te dire que ton modèle de données est foireux.
- tu ne devrais pas avoir de ligne vide (cela ce calcul simplement si besoin)
- tu as des doublons dans les données c'est pas bon (ère forme normale).
tu devrais avoir quelque chose comme ceci
mcd_vente.png
ce qui donne ceci en terme de ddl (MySQL mais le principe et la structure des table est le même pour les autres).
[mysql]CREATE TABLE vendeur(
idvendeur int (11) Auto_increment NOT NULL ,
nom Varchar (25) NOT NULL ,
PRIMARY KEY (idvendeur )
)ENGINE=InnoDB;
CREATE TABLE produit(
idproduit int (11) Auto_increment NOT NULL ,
nomproduit Varchar (25) NOT NULL ,
description Varchar (25) NOT NULL ,
PRIMARY KEY (idproduit )
)ENGINE=InnoDB;
CREATE TABLE vendre(
idvendeur Int NOT NULL ,
idproduit Int NOT NULL ,
PRIMARY KEY (idvendeur ,idproduit )
)ENGINE=InnoDB;
ALTER TABLE vendre ADD CONSTRAINT FK_vendre_idvendeur FOREIGN KEY (idvendeur) REFERENCES vendeur(idvendeur);
ALTER TABLE vendre ADD CONSTRAINT FK_vendre_idproduit FOREIGN KEY (idproduit) REFERENCES produit(idproduit);[/mysql]
une tel structure permet des mises à jour simple et une meilleur maintenance
@+