Bonjour,
Je voudrais récupérer les 5 dates les plus récentes d'une table. Je m'explique : je voudrais faire ça 5 fois.
SELECT MAXI(DATE) FROM DATE
Merci de m'aider
Bonjour,
Je voudrais récupérer les 5 dates les plus récentes d'une table. Je m'explique : je voudrais faire ça 5 fois.
SELECT MAXI(DATE) FROM DATE
Merci de m'aider
Attention :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT a.date FROM Date a, Date b WHERE a.date <= b.date GROUP BY a.date HAVING COUNT(*) <= 5
Le code ci-dessus ne fonctionne bien que si les dates sont toutes différentes (ce qui est plausible si tes dates sont des timestamps).
Ce code n'est pas très performant : si tu connais une borne pour la 5 ième date c'est mieux et tu ajoutes
Evite de donner le nom "date" à des colonnes ou a des tables, date risquant d'être un mot clé, mais tu n'as peut-être écris cela qu'à titre d'exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part AND a.date > Borne
(Sur une idée de Joe Celko)
Si les dates sont identiques, tu peux essayer :
Si tu connais la borne, il faut l'ajouter aux select intérieurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT a.date FROM (SELECT DISTINCT date FROM Date) a, (SELECT DISTINCT date FROM Date) b WHERE a.date <= b.date GROUP BY a.date HAVING COUNT(*) <= 5
et si ta colonne contient aussi l'heure et que tu veux les 5 dates sans les heures il faut remplacer les select intérieurs par (syntaxe Oracle, mais dispo dans tous les SGBDR)
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT DISTINCT Date FROM Date WHERE Date > Borne
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT DISTINCT TRUNC(Date) FROM Date WHERE Date > Borne
Solution Oracle :
Bloon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT * FROM (SELECT * FROM LATABLE ORDER BY LADATE DESC) WHERE ROWNUM <= 5
Ok merci bien pour toutes ces solutions... ça marche super
Partager