Bonjour,
Je vais devenir chèvre avec mes bovins !
Structure simplifiée de la table 'detentions' :
- B_D_FK_IND_BOVINS : l'identifiant du bovin
- B_D_DAT_ENTR : la date d'entrée dans une exploitation, de type DATE
- B_D_DAT_SORT : la date de sortie de l'exploitation, de type DATE
- B_D_FK_IND_CAUSE_SORT : identifiant de la cause de sortie de détention
1) Nombre de détentions à cause de sortie 2, 3 ou 11 qui ont une détention ultérieure :
2) Nombre de détentions (d1) à cause de sortie 2, 3 ou 11 qui ont une détention ultérieure (d2) dont la date d'entrée de d2 est égale à la date de sortie de d1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT COUNT(*) FROM bdni2.detentions d1 WHERE d1.B_D_FK_IND_CAUSE_SORT IN (2, 3, 11) AND EXISTS ( SELECT * FROM bdni2.detentions d2 WHERE d1.B_D_FK_IND_BOVINS = d2.B_D_FK_IND_BOVINS AND d2.B_D_DAT_ENTR >= d1.B_D_DAT_SORT AND d2.B_D_DAT_ENTR > d1.B_D_DAT_ENTR ) # Résultat : 207 547
3) Nombre de détentions (d1) à cause de sortie 2, 3 ou 11 qui ont une détention ultérieure (d2) dont la date d'entrée de d2 est de 1 à 2 jours après la date de sortie de d1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT COUNT(*) FROM bdni2.detentions d1 WHERE d1.B_D_FK_IND_CAUSE_SORT IN (2, 3, 11) AND EXISTS ( SELECT * FROM bdni2.detentions d2 WHERE d1.B_D_FK_IND_BOVINS = d2.B_D_FK_IND_BOVINS AND d2.B_D_DAT_ENTR = d1.B_D_DAT_SORT AND d2.B_D_DAT_ENTR > d1.B_D_DAT_ENTR ) # Résultat : 50 326 détentions
4) Nombre de détentions (d1) à cause de sortie 2, 3 ou 11 qui ont une détention ultérieure (d2) dont la date d'entrée de d2 est de 3 à 7 jours après la date de sortie de d1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 SELECT COUNT(*) FROM bdni2.detentions d1 WHERE d1.B_D_FK_IND_CAUSE_SORT IN (2, 3, 11) AND EXISTS( SELECT * FROM bdni2.detentions d2 WHERE d1.B_D_FK_IND_BOVINS = d2.B_D_FK_IND_BOVINS AND d2.B_D_DAT_ENTR > d1.B_D_DAT_SORT AND DATE_ADD(d1.B_D_DAT_SORT, INTERVAL 2 DAY) >= d2.B_D_DAT_ENTR AND d2.B_D_DAT_ENTR = ( SELECT MIN(d3.B_D_DAT_ENTR) FROM bdni2.detentions d3 WHERE d3.B_D_FK_IND_BOVINS = d1.B_D_FK_IND_BOVINS AND d3.B_D_DAT_ENTR > d1.B_D_DAT_SORT AND d3.B_D_DAT_ENTR > d1.B_D_DAT_ENTR ) ) # Résultat : 103 086
5) Nombre de détentions (d1) à cause de sortie 2, 3 ou 11 qui ont une détention ultérieure (d2) dont la date d'entrée de d2 est plus de 7 jours après la date de sortie de d1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 SELECT COUNT(*) FROM bdni2.detentions d1 WHERE d1.B_D_FK_IND_CAUSE_SORT IN (2, 3, 11) AND EXISTS( SELECT * FROM bdni2.detentions d2 WHERE d1.B_D_FK_IND_BOVINS = d2.B_D_FK_IND_BOVINS AND d1.B_D_DAT_SORT < d2.B_D_DAT_ENTR AND DATE_ADD(d1.B_D_DAT_SORT, INTERVAL 2 DAY) < d2.B_D_DAT_ENTR AND DATE_ADD(d1.B_D_DAT_SORT, INTERVAL 7 DAY) >= d2.B_D_DAT_ENTR AND d2.B_D_DAT_ENTR = ( SELECT MIN(d3.B_D_DAT_ENTR) FROM bdni2.detentions d3 WHERE d3.B_D_FK_IND_BOVINS = d1.B_D_FK_IND_BOVINS AND d3.B_D_DAT_ENTR > d1.B_D_DAT_SORT ) ) # Résultat : 33 652
Quand j'additionne les résultats 2 à 5 (210 560), je trouve plus que 1 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SELECT COUNT(*) FROM bdni2.detentions d1 WHERE d1.B_D_FK_IND_CAUSE_SORT IN (2, 3, 11) AND EXISTS( SELECT * FROM bdni2.detentions d2 WHERE d1.B_D_FK_IND_BOVINS = d2.B_D_FK_IND_BOVINS AND d1.B_D_DAT_SORT < d2.B_D_DAT_ENTR AND DATE_ADD(d1.B_D_DAT_SORT, INTERVAL 7 DAY) < d2.B_D_DAT_ENTR AND d2.B_D_DAT_ENTR = ( SELECT MIN(d3.B_D_DAT_ENTR) FROM bdni2.detentions d3 WHERE d3.B_D_FK_IND_BOVINS = d1.B_D_FK_IND_BOVINS AND d3.B_D_DAT_ENTR > d1.B_D_DAT_SORT ) ) # Résultat : 23 496
Qu'est-ce qui cloche ?
Partager