Requête SQL : Tri par jour

Signaler
Messages postés
9
Date d'inscription
mardi 13 avril 2021
Statut
Membre
Dernière intervention
3 mai 2021
-
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
-
Bonjour,

Dans le cadre d'un projet, je possède cette structure de données (c'est tout à fait normal si les 2 tables de mesure ne sont pas reliées :

L'attribut date correspond au format 01-01-2015, à partir duquel j'avais préalablement ajouté une colonne jour qui m'affiche le jour de la semaine grâce à une fonction python.

J'aimerais maintenant réaliser une moyenne de comptage par jour de la semaine, puis ordonner par jour croissant 'Monday, Tuesday, etc',, ce que je n'arrive pas à faire.
La requête suivante classe par ordre alphabétique de jour, pas par ordre tout court. J'ai essayé la fonction DAYOFWEEK dans tous les sens, pas moyen non plus.
select jour, avg(mesures_quotidiennes.valeur)
from mesures_quotidiennes
inner join mesure on mesures_quotidiennes.date=mesure.date
group by jour
ORDER BY jour


Y aurait-il une fonction qui me permettrait ce tri, ou dois-je créer une nouvelle table avec une colonne n°_jour (ex : Monday --> 1...) qui me permettrait de réaliser ce tri.

Merci à vous !

3 réponses

Messages postés
15426
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 mai 2021
845
bonjour,
peux-tu donner le type de chacun de tes champs?
peux-tu donner un exemple de ce que contiennent tes tables mesures_quotidiennes et mesure, ainsi que le résultat attendu?
Messages postés
15426
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 mai 2021
845
qu'as-tu essayé avec DAYOFWEEK?
Messages postés
15426
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 mai 2021
845
je pense que le champ jour doit être supprimé de la table.
Messages postés
15426
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 mai 2021
845 >
Messages postés
15426
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 mai 2021

moi j'essaierais ainsi:
select DATENAME(WEEKDAY, date), DATEPART(WEEKDAY, date), avg(valeur)
from mesures_quotidiennes
group by DATENAME(WEEKDAY, date), DATEPART(WEEKDAY, date)
ORDER BY DATEPART(WEEKDAY, date)
Messages postés
9
Date d'inscription
mardi 13 avril 2021
Statut
Membre
Dernière intervention
3 mai 2021

Bonjour, oui voici les types de chaque champ :
 #   Column      Non-Null Count   Dtype  
--- ------ -------------- -----
0 id 567725 non-null int64
1 date 567725 non-null object
2 id_station 567725 non-null int64
3 valeur 565129 non-null float64
4 heure 530400 non-null object
5 type 660 non-null float64
6 jour 567725 non-null object


Voici le contenu de la table Mesure:


Et de la vue Mesures_quotidiennes :


J'obtiens ce message d'erreur lorsque je fais votre code :
SQL Error [42703]: ERREUR: la colonne « weekday » n'existe pas
Position : 17

Weekday correspondait-elle à une fonction ?
Messages postés
15426
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 mai 2021
845 >
Messages postés
9
Date d'inscription
mardi 13 avril 2021
Statut
Membre
Dernière intervention
3 mai 2021

quel logiciel utilises-tu?
Messages postés
9
Date d'inscription
mardi 13 avril 2021
Statut
Membre
Dernière intervention
3 mai 2021

Dans ces captures, DBeaver
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448
Bonjour,
Et comme SGBD ? SqlServer ? Quelle version ?
Ou alors tu utilises autre chose ? Mysql ? PostgreSql ? autre ??
Messages postés
9
Date d'inscription
mardi 13 avril 2021
Statut
Membre
Dernière intervention
3 mai 2021

Bonjour,
J'utilise PostGreSQL.
Merci à vous, cela change-t-il quelque chose concernant la requête ?
Merci
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448
Vu que tu as posté dans sqlserver... Oui ca change beaucoup de choses !!

Je déplace donc ta question dans le bon forum !