Aide urgente SVP pour la correction d'une requête ! - SQL/NoSQL - Programmation
Marsh Posté le 09-06-2015 à 17:39:48
Salut,
Quand je fais ce genre de stats, je passe par ce type de requête :
select
UT.id_utilisateur
, UT.nom
, FO.service
, sum(case when nombre is null then 1 else 0 end) / count(*) as pc_nombre_null
, sum(case when cout is null then 1 else 0 end) / count(*) as pc_cout_null
...
from
FORM FO
inner join UTILISATEUR UT on UT.id_utilisateur = FO.id_utilisateur
group by
UT.id_utilisateur
, UT.nom
, FO.service
--j'ai ajouté l'id_utilisateur dans le select et dans le group by pour éviter le cas ou plusieurs utilisateurs aient le même nom.
si tu as besoin d'un niveau de regroupement différent (par service sans prendre en compte l'utilisateur par exemple), je pense qu'il vaut mieux faire une seconde requête...
Marsh Posté le 05-06-2015 à 14:45:13
Bonjour tout le monde, ça fait un moment que j'essaye d'écrire une requette qui affichera un pourcentage par champs,
j'ai 2 tables: - FORM(id_form, id_utilisateur, service, libelle, date, nombre, cout, bilan..)
- UTILISATEUR(id_utilisateur, nom)
ce que je voudrais c'est afficher le pourcentage des valeurs nulles dans les colonnes : 'nombre', 'cout', 'bilan', 'date', au même temps dans quel 'service' et par quel 'utilisateur' !!
jusqu'à présent j'arrive à tester champs par champs et service par service tout en donnant le pourcentage total par service (sans prendre en considération l'utilisateur) et le pourcentage total par service et par chaque utilisateur, avec la requête suivante qui marche bien sur :
SELECT distinct(select distinct(((SELECT COUNT( * )FROM FORM WHERE DATE_DEBUT IS NULL and CD_SERVICE='a' )*100 /(SELECT COUNT( * )FROM FORM where CD_SERVICE='a'))) from FORM) AS Totale_a,
(select distinct(((SELECT COUNT( * )FROM FORM WHERE DATE_DEBUT IS NULL and SERVICE='a' and ID_UTIL_ASSIST=318980 )*100 /(SELECT COUNT( * )FROM FORM where SERVICE='a' and ID_UTIL_ASSIST=318980))) from FORM) AS x ,
(select distinct(((SELECT COUNT( * )FROM FORM WHERE DATE_DEBUT IS NULL and SERVICE='a' and ID_UTIL_ASSIST=363824 )*100 /(SELECT COUNT( * )FROM FORM where SERVICE='a' and ID_UTIL_ASSIST=363824))) from FORM) AS y,
(select distinct(((SELECT COUNT( * )FROM FORM WHERE DATE_DEBUT IS NULL and SERVICE='a' and ID_UTIL_ASSIST=363819 )*100 /(SELECT COUNT( * )FROM FORM where SERVICE='a' and ID_UTIL_ASSIST=363819))) from FORM) AS z
from FORM;
quelqu'un aurait une idée ?
merci par avance