Bonjour,
Je débute en SQL (SQL2) et j'atteinds mes premières limites sur une requête
Il s'agit de retrouver des données chiffrées pour des entreprises à chaque fin de mois depuis 5 ans et en ne conservant que les 10 valeurs maximales.
Evidement les bases correspondantes contiennent toutes les données pour tous les jours ouvrés.
Ma requête actuelle fonctionne très bien pour obtenir toutes ces données que j'ai ensuite élaguer avec excel pour plus de facilité mais j'aimerais quand même mettre au point la requête ultime qui ne sélectionerait que les données finales directement (date fin de mois et 10 max donc).
J'ai essayé d'implémenter plusieurs solutions pour les deux aspects du problème séparement sans succès (LIMIT, TOP, PERCENT_RANK, ...)
Je pense que la difficulté supplémentaire vient du fait que mes données proviennent de plusieurs bases différentes.
Une version générique (qui parlera plus que la requête brute pleine de conditions) pour qui veut bien m'aider ressemblerait à ça:
T1 contient une donnée par jour (donc contient les dates)
T3 contient une autre donnée par jour (idem)
T2 contient le nom de l'entreprise et la référence de cette entreprise dans les autres bases
Le but étant évidement d'avoir les 10 valeurs maximales de T3.DonnéeChiffrée1 par jour et pas les 10 valeurs maximales de toute la base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT T1.Madate, T2.NomEntreprise, T3.DonnéeChiffrée1, T1.DonnéeChiffrée2 FROM Matable1 T1, Matable2 T2, Matable3 T3 WHERE T1.Madate >to_date('01-APR-2008', 'dd-MON-yyyy') AND T3.Madate = T1.Madate AND T2.NomEntreprise = 'cequetuveux.com' AND T3.EntrepriseID = T2.EntrepriseID AND T1.EntrepriseID = T2.EntrepriseID ORDER BY T1.Madate, T3.DonnéeChiffrée1
Par avance merci à qui voudra bien m'éclairer,
L
Partager