= Recette pour calculer les effectifs de civelles et d'anguilles jaunes = Retour à [wiki:"Recette SQL"] [[PageOutline]] [[BR]] == Somme des effectifs annuels de civelles sur les deux passes à anguilles == {{{#!sql -- attention cette requête suppose que les coefficients de conversion sont entrés journalièrement select extract( year from date) as year, sum(effectif_total) as effectif_total FROM ( -- sous requête pour joindre les deux tables effectif total et poids sur -- la base de leur colonne commune date select case when ope_date_eff is not null then ope_date_eff else ope_date end as date, case when effectif IS NOT null and effectif_from_poids is not null then effectif+poids when effectif is null then poids else effectif end as effectif_total, effectif, poids, effectif_from_poids, coe_valeur_coefficient from ( -- sous requete qui permet de récupérer les effectifs par jour SELECT cast(t_operation_ope.ope_date_debut as date) AS ope_date_eff, sum(t_lot_lot.lot_effectif) as effectif FROM iav.t_operation_ope JOIN iav.t_lot_lot ON t_lot_lot.lot_ope_identifiant = t_operation_ope.ope_identifiant where ope_dic_identifiant in (6,5,12) and lot_tax_code='2038' and lot_std_code='CIV' and lot_effectif>0 group by ope_date_eff order by ope_date_eff) As effectif_seulement full outer join ( -- sous requete pour extraire les quantités de lots par jour -- elle suppose que les valeurs de quantités de lots sont par jour SELECT ope_date, round(poids*coe_valeur_coefficient) as effectif_from_poids, poids, coe_valeur_coefficient FROM( SELECT cast(t_operation_ope.ope_date_debut as date) AS ope_date, sum(t_lot_lot.lot_quantite) as poids FROM iav.t_operation_ope JOIN iav.t_lot_lot ON t_lot_lot.lot_ope_identifiant = t_operation_ope.ope_identifiant where ope_dic_identifiant in (6,5,12) and lot_tax_code='2038' and lot_std_code='CIV' group by ope_date ORDER BY ope_date) AS qte left join ( select coe_date_debut, coe_valeur_coefficient from iav.tj_coefficientconversion_coe where coe_qte_code='1' and coe_tax_code='2038' and coe_std_code='CIV') as coe on coe_date_debut=ope_date where poids is not null) as poids_seulement on poids_seulement.ope_date=effectif_seulement.ope_date_eff) AS effectif_journaliers group by year; }}} ||year||effectif_total|| ||1996||444400|| ||1997||70799|| ||1998||712516|| ||1999||7|| ||2000||3|| ||2001||4|| ||2002||5|| ||2003||6|| ||2004||7|| ||2005||9|| ||2006||9|| ||2007||9|| ||2008||9|| ||2009||9|| ||2010||9|| [[BR]] == Somme des effectifs annuels d'anguilles jaunes sur les deux passes à anguilles et la passe à bassins == {{{#!sql SELECT cast(t_operation_ope.ope_date_debut as date) AS ope_date_eff, sum(t_lot_lot.lot_effectif) as effectif FROM iav.t_operation_ope JOIN iav.t_lot_lot ON t_lot_lot.lot_ope_identifiant = t_operation_ope.ope_identifiant where ope_dic_identifiant in (5,6,12) and lot_tax_code='2038' and lot_std_code='AGJ' and lot_effectif>0 and lot_lot_identifiant IS NULL group by ope_date_eff order by ope_date_eff }}} ||ope_date_eff||effectif|| ||2010-08-30||65|| ||2010-09-03||214|| ||2010-09-06||601|| ||2010-09-08||400|| ||2010-09-09||740||