Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 21/06/2012 13:13:21
- damalaan
- Membre
histoire de count
Bonjour,
j'ai une table qui peut ressembler à ça :
usine,esp
1621;2
1621;1
1622;1
1623;1
1624;2
je veux compter le nb de esp, je fais donc cette requete :
select nb, count(distinct usine)
from tbl_test_tst
group by nb;
ce qui me renvoie :
esp;nb
1;3
2;2
mais je veux aussi savoir combien de usine ont esp en commun : je devrais avoir un résultat de 1 (1621;1 et 1621;2)
merci d'avance
Dernière modification par damalaan (21/06/2012 13:13:55)
Hors ligne
#2 21/06/2012 13:46:19
- flo
- Membre
Re : histoire de count
Bonjour,
j'ai une table qui peut ressembler à ça :
usine,esp 1621;2 1621;1 1622;1 1623;1 1624;2
mais je veux aussi savoir combien de usine ont esp en commun : je devrais avoir un résultat de 1 (1621;1 et 1621;2)
J'ai beau me creuser la cervelle, je n'arrive vraiment pas à comprendre ce que vous avez voulu dire.
Pourriez-vous expliquer différemment votre besoin?
Le résultat attendu est-il :
usine, letrucpascompris
1621;1
1621;2
?
Hors ligne
#3 21/06/2012 14:21:01
- damalaan
- Membre
Re : histoire de count
leTrucPasCompris est :
le nombre d'usine ayant comme 1 et 2 dans la colonne esp
dans ma minitable (en réel, j'ai qq centaines de lignes!), je n'ai qu'une usine ayant 1 et 2
je peux reformuler différemment pour éviter la confusion avec cette forme::
1621;b
1621;a
1622;a
1623;a
1624;b
combien y a t il d'usine ayant a ET b, réponse 1
Hors ligne
#4 21/06/2012 18:20:08
- rjuju
- Administrateur
Re : histoire de count
est-ce qu'une requête de ce genre ferait l'affaire ?
SELECT usine
FROM table
group by usine
having count(distinct esp) > 1
Julien.
https://rjuju.github.io/
Hors ligne
#5 25/06/2012 14:30:40
- damalaan
- Membre
Re : histoire de count
Finalement, j'ai opté pou ça :
select count(*) from
(
select t1.usine from tbl_test_tst t1 inner join tbl_test_tst t2
on t1.usine = t2.usine
WHERE t1.esp=1 and t2.esp =2
) as t;
et j'obtiens bien 1 (1 usine a esp=1 et esp = 2)
La table que j'ai présenté était pour l'exemple, en réalité, j'ai une jointure dès le début, ce qui me donne un truc du genre :
SELECT COUNT(*) FROM
(SELECT DISTINCT ta.chf_id, ta.trn_esp
FROM
(SELECT DISTINCT chf_id, trn_esp
FROM
tbl_chauffeur_chf t1 INNER JOIN tbl_tournee_trn t2
ON t1.chf_id = t2.trn_chauffeur
WHERE trn_date_prel >110400 AND chf_archive = FALSE) ta
INNER JOIN
(SELECT DISTINCT chf_id, trn_esp
FROM
tbl_chauffeur_chf t1 INNER JOIN tbl_tournee_trn t2
ON t1.chf_id = t2.trn_chauffeur
WHERE trn_date_prel >110400 and chf_archive = FALSE) tb
ON ta.chf_id = tb.chf_id
WHERE ta.trn_esp = 1 and tb.trn_esp=2
) t;
Le but étant de savoir quel chauffeur a tourné sur trn_esp = 1 ET trn_esp=2
Si vous avez plus simple, je suis preneur!
Hors ligne
Pages : 1