2010-09-20 7 views
1

J'ai besoin d'aide pour écrire une instruction select qui fera une moyenne des 52 dernières lignes de données.Fonction moyenne T-SQL - compte 52 lignes de données

S'il y a moins de 52 lignes, il ne fera que la moyenne du nombre de lignes présentes.

Je sais que la fonction avg dans SQL ignorera la valeur null ... mais je suis allé aussi loin.

SELECT AVG(E.Interest) 
from InterestRates E 
Where Interest in (select COUNT(Interest) <=52 from InterestRates) 

je voulais pour chaque ligne de données à revenir en arrière et calculer la moyenne 52 lignes grâce

+0

Veuillez définir ce que vous entendez par * les 52 dernières lignes *. –

+0

les 52 derniers enregistrements entrés dans le tableau –

+1

Et comment savez-vous ce que sont les 52 derniers enregistrements? Avez-vous une colonne d'identité ou une sorte d'horodatage? – LittleBobbyTables

Répondre

7

Essayez ceci:

SELECT AVG(Interest) AS AvgInterest 
FROM (
    SELECT TOP 52 E.Interest 
    FROM InterestRates E 
    ORDER BY DateEntered DESC 
) Top52Interests 

EDIT

Sur la base des commentaires que vous peut commander par l'identité à la place:

SELECT AVG(Interest) AS AvgInterest 
FROM (
    SELECT TOP 52 E.Interest 
    FROM InterestRates E 
    ORDER BY YourIdentityField DESC 
) Top52Interests 

La bonne chose est que cette requête fonctionnera aussi dans SQL 2000.

0

SELECT AVG (E.Interest) à partir de
interestrates E OÙ ROWNUMBER() < = 52 ORDER BY quelle que soit DESC;

Questions connexes