2010-10-03 7 views
0

J'utilise sql-server 2005sélectionner 10 lignes avec décalage horaire le plus bas sql

Salut, j'ai la table des utilisateurs avec UserID et registrationDate. Je veux sélectionner la période la plus courte entre deux dates d'enregistrement lorsque la première date est x et l'autre ligne est x + 10 lignes. Cela ne me dérange pas le curseur parce que je vais exécuter cette requête de temps en temps.

Je vais vous expliquer à nouveau, j'ai besoin de la plus courte période de temps entre 10 enregistrements d'utilisateurs pour avoir une idée de ce que peut être une grande limite d'enregistrements pour un certain temps.

grâce

+0

vous avez raison, votre réponse est exactement ce que je cherchais, mais en raison de l'anglais étant mon 3e parlé langue que je ne pouvais pas écrire demander correctement. – eugeneK

Répondre

1

Essayez cette requête si vous utilisez SQL Server 2005 ou plus récent:

WITH T1 AS (
    SELECT 
     userID, 
     registrationDate, 
     ROW_NUMBER() OVER (ORDER BY registrationDate) AS rn 
    FROM Users 
), T3 AS (
    SELECT 
     T1.registrationDate AS interval_start, 
     T2.registrationDate AS interval_end, 
     T1.registrationDate - T2.registrationDate AS diff 
    FROM T1 
    JOIN T1 T2 
    ON T1.rn = T2.rn + 5 
) 
SELECT TOP 1 interval_start, interval_end 
FROM T3 
ORDER BY diff 
+0

1900-01-01 00:04:00 ,,, c'est la réponse que j'ai. quand le plus bas date d'enregistrement est en 2008 et le plus élevé aujourd'hui ... – eugeneK

+0

Vous pouvez facilement modifier la requête voir l'heure à laquelle le pic est survenu. Voir ma requête mise à jour. –

+0

mon mauvais ", maintenant j'ai ce que" 1900-01-01 00:04:00 "signifie – eugeneK

Questions connexes