Comment regrouper les résultats de requête par la partie heure d'une colonne datetime dans SQLAlchemy?Grouper par heure dans SQLAlchemy?
Répondre
Si je me souviens bien, vous devez d'abord extraire l'heure de votre horodatage et vous pouvez alors le groupe par là.
query(extract('hour', timeStamp).label('h')).group_by('h')
Cela fonctionne pour PostgreSQL:
.group_by(func.date_trunc('hour', date_col))
Je n'ai pas mentionné que j'utilise sqlite; date_trunc est postgres? – Dave
Vous pouvez également le faire en Python. En supposant que vous avez un ordre query_result
:
from itertools import groupby
def grouper(item):
return item.created.hour
for (hour, items) in groupby(query_result, grouper):
for item in items:
# do stuff
Cette réponse est adaptée d'une réponse à une question similaire here
Récemment je devais faire une chose similaire en utilisant sqlalchemy et MySQL et a fini par utiliser DATE_FORMAT (http://www.w3schools.com/sql/func_date_format.asp) à groupe par heure, minute, seconde
.group_by(func.date_format(date_col, '%H:%i:%s'))
pour seul groupe par heure, il serait '%H'
au lieu de '%H:%I:%s'
Dans Oracle, utilisez func.trunc(MyTable.dt, 'HH')
C'est un peu compliqué, cependant. Cela échoue:
q = session.query(func.trunc(MyTable.dt, 'HH'), func.sum(MyTable.qty) \
.group_by(func.trunc(MyTable.dt, 'HH'))
Mais cela réussit:
trunc_date = func.trunc(MyTable.dt, 'HH')
q = session.query(trunc_date, func.sum(MyTable.qty) \
.group_by(trunc_date)
Merci à this thread pour la pointe.
- 1. Fonction Grouper & compter dans sqlalchemy
- 2. Grouper par date dans un format particulier dans SQLAlchemy
- 3. SQLAlchemy: Comment grouper par deux champs et filtrer par date
- 4. Tracer les Tweets de DB dans Ruby, grouper par heure
- 5. Grouper par mois dans SQLite
- 6. "Grouper par jour" dans PowerShell
- 7. Grouper par - plusieurs conditions - MySQL
- 8. Est-il possible de grouper par heure/minute/quart d'heure directement dans ActiveRecord/Rails?
- 9. Grouper par et où?
- 10. MYSQL - Grouper par limite
- 11. Django: Grouper par?
- 12. extjs grouper par lettre
- 13. Heure par défaut dans VB.NET
- 14. Optimize Grouper par dans LINQ to Entities
- 15. Grouper par colonnes multiples dans ActiveRecord
- 16. NHibernate: Grouper par et Nombre
- 17. LINQ To SQL "Grouper par"
- 18. Sélectionnez groupes date/heure dans MySQL regroupés par heure
- 19. MySQL - Grouper par plusieurs conditions
- 20. MySQL: grouper par date RANGE?
- 21. C# LINQ Requête - Grouper par
- 22. Application de Grouper par LINQ
- 23. Filtrage par nombre de relations dans SQLAlchemy
- 24. Grouper par et trier par colonne dans CMFCListCtrl
- 25. Grouper par mois et par année dans MySQL
- 26. Sélection par lots avec SQLAlchemy
- 27. Comment "grouper par" sur une plage DATETIME?
- 28. Demandes limite par heure
- 29. Django filtre par heure
- 30. LINQ - joindre, grouper par (plusieurs champs), grouper par, sélectionner de nouveaux champs
Cela a fonctionné quand j'ai mis des citations sur l'heure. – Dave
Oups ... oui, vous aurez besoin de faire cela. J'ai mis à jour mon exemple. Merci d'avoir attrapé ça. – Scott