TS SQL - grouper par minute
J'ai une table avec des horodatages. Quelle est la bonne requête pour obtenir les enregistrements de compte pour chaque minute de la dernière heure.
I. e. si maintenant est de 2:25, je veux savoir combien ont entre 1:25 et 1:26, 1:26 1:27, et ainsi de suite, donc j'ai 60 résultats.
source d'informationauteur Sunny Milenov
Vous devez vous connecter pour publier un commentaire.
Cela permettra de retourner un nombre de résultats pour chaque minute où vous avez des enregistrements) dans la dernière heure
Cela peut revenir à moins de 60 résultats, en fonction des données. Si vous disposez de 60 résultats, la requête est légèrement différente. Il utilise une Expression de Table Commune pour générer une liste de 60 numéros et une sous-requête corrélée à obtenir les résultats pour chaque minute:
Pour voir les résultats, remplacer DATEADD(hh, -1, GETDATE()) avec DATEADD(mi, -15, GETDATE()) et vous obtiendrez les résultats pour les 15 dernières minutes et 0 pour les autres minutes.
Que vous avez modifié la question, j'ai modifier ma réponse. Si je vous ai bien compris, vous voulez regarder qu'à la dernière heure, que c'est un laps de temps d'une heure avant que la demande est faite à l'heure actuelle. C'est la façon dont je le ferais:
Je ne suis pas entièrement sûr de la syntaxe exacte. Lors du codage dans
MSSQL
je voudrais utiliser leCURRENT_TIMESTAMP
à l'heure actuelle,MINUTE
au lieu deDATEPART
etc, mais vous obtenez l'idée de la solution.DATEPART est ce que vous cherchez:
Résultat:
C'est une alternative que j'ai trouvé utile pour déterminer le nombre d'enregistrements qui sont insérées ou mises à jour à la minute. La bonne chose à propos d'avoir votre format de date en tant que variable à l'avant, c'est que vous pouvez facilement changer d'analyser par heure. Espérons que cette aide!
SELECT COUNT (TS) à partir de la TABLE où TABLE.TS ENTRE(starttime, endtime)