2010-08-15 6 views
1

prix Date Heure 1.0 20100815 1 1,2 20100815 2 1.3 20100815 3 3.1 20100813 1 3.2 20100813 2 : : :Sélectionnez la lastest N données jour de la table

Maintenant, je voulez sélectionner le dernier prix de 3 jours avec tout le temps, j'utilise comme ça

select price, date from allquotes where date in 
     (select date from allquotes group by date order by date desc limit 3) 

Est-ce exact? Est-ce efficace? Une suggestion pour améliorer cela?

Si je ne veux montrer qu'un seul prix avec la dernière fois, comment faire?

Merci beaucoup!

+0

Quel prix voulez-vous gagner quand il y a des doublons pour la même date, ou voulez-vous les montrer tous? – RedFilter

+0

Merci pour vos commentaires, j'ai mis à jour mon poste – skydoor

+1

Une saveur particulière de SQL? –

Répondre

1

Cela devrait faire l'affaire sur SQL Server:

select top 3 q.pricee, q.date, q.time 
from (
    select date, max(time) as MaxTime 
    from allquotes 
    group by date 
) qm 
inner join quotes q on qm.date = q.date and qm.MaxTime = time 
order by date desc 

Pour MySQL, essayez:

select q.pricee, q.date, q.time 
from (
    select date, max(time) as MaxTime 
    from allquotes 
    group by date 
) qm 
inner join quotes q on qm.date = q.date and qm.MaxTime = time 
order by date desc 
limit 3 
0
Select Top 3 Sum(price), 
      date, 
      Sum(time) 
From allquotes 
Group By date 
Order By date Desc 
Questions connexes