Comment puis-je exécuter des requêtes telles que « dans les cinq jours » sur les données de séries chronologiques?

StackOverflow https://stackoverflow.com/questions/5325261

Question

Je voudrais avoir un moyen facile d'exécuter des requêtes telles que la requête suivante sur mes données de séries chronologiques:

« Quels sont les événements les plus typiques avoir lieu dans les sept jours de eachother »?

Je pourrais le faire en utilisant SQL et un programme Java, en regardant chaque ligne et exécuter une requête, qui recherche tous les événements sept jours plus tôt ou plus tard, mais ce n'est pas très élégante et la performance sera horrible. Y at-il une autre façon de le faire en utilisant élégance SQL ou un autre langage de requête?

La structure de la table simplifiée est comme suit:

thetime datetime
eventid int
magnitude double
intensity double

Je ne veux pas spécifiquement pour décrire ce que les données au sujet, comme je suis à la recherche d'une solution générale.

Était-ce utile?

La solution

Vous pouvez utiliser une auto se joindre à faire quelque chose comme ça. Cette syntaxe est valide pour le serveur SQL, mais il est difficile de personnaliser votre configuration lorsque nous ne savons pas la structure de la table ou ce que vous utilisez SGBDR ...

SELECT  TOP 10
        a.Event as 'First Event', 
        b.event as 'Second Event',
        ABS(CAST((a.timefield - b.timefield) as INT)) as 'Time Apart'
FROM MYtable a
INNER JOIN Mytable B
    ON a.IDField <> b.IDField
WHERE (ABS(CAST((a.timefield - b.timefield) as INT)) <= 5
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top