|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Chercheur en informatique Inscription : juillet 2011 Messages : 26 ![]() |
Bonjour,
Je débute dans le SQL et je rencontre des problèmes avec une requête sur Oracle. Voici les données du problème :
Je souhaite récupérer en agrégeant pour chaque user et mission : l'user, la mission, la date et heure de début de l'intervention de l'user sur la mission et la date et heure de fin d'intervention. Table : AGENT ;MSSION ;debut ;fin ; HEURE DEBUT;HEURE FIN; QT A;45;02/02/11;02/02/11; 8H40; 8H43;50 A;45;02/02/11;02/02/11; 9H25;10H48;50 A;45;03/02/11;03/02/11;11H25;12H48;50 B;45;02/02/11;02/02/11;13H25;13H48;50 B;45;03/02/11;03/02/11;15H25;16H48;50 B;45;04/02/11;04/02/11;16H25;16H48;50 C;44;02/02/11;02/02/11;16H58;17H50;80 C;44;02/02/11;02/02/11;20H30;21H30;80 AGENT ;tache ;debut ;fin ; HEURE DEBUT;HEURE FIN; qT A;45;02/02/11;03/02/11; 8H40;12H48;50 B;45;02/02/11;04/02/11;13H25;16H48;50 C;44;02/02/11;02/02/11;16H58;21H30;80 |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Bonjour,
quelles requêtes avez-vous testé ? Avez-vous une primary key sur cette table où est-elle tout simplement très mal modélisée ? Bref dans tous les cas si vous concédez d'avoir en résultat des timestamp pour vos date de début / fin une solution assez simple pourra être trouvée avec ceci : http://sqlpro.developpez.com/cours/sqlaz/ensembles/ Et ceci : http://www.dba-oracle.com/f_to_date.htm |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Chercheur en informatique Inscription : juillet 2011 Messages : 26 ![]() |
Bonjour et merci de votre réponse.
Voici la requête que je teste : Code :
Merci de votre aide. |
||
|
|
00
|
|
|
#4 |
![]() ![]() |
Attention : dans le select vous avez agent, dans le group by c'est user.
User est un mot réservé qui indique le compte utilisateur avec lequel vous êtes connecté à la base de données : Sinon votre requête me paraît un bon début : ce qui pêche aussi ce sont les heures parce qu'elles sont stockées dans une colonne de format littéral type varchar2 ! Vos heures devraient être incluses dans vos dates de début et de fin. Pouvez-vous modifier la structure de la table ou êtes-vous condamné à l'utiliser en l'état ?
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#5 |
|
Invité de passage
![]() Chercheur en informatique Inscription : juillet 2011 Messages : 26 ![]() |
Merci
Je rencontre un nouveau problème au niveau du calcul de la différence entre deux dates dans oracle. En fait le : date1 to_char(ah.import_date, 'DD/MM/YYYY HH24:MI:SS') , retourne 30/03/2011 10:51:13 date2 to_char(ol.load_date, 'DD/MM/YYYY HH24:MI:SS') , retourne 13/04/2011 16:49:50 Je n'arrive pas à faire la différence entre DATE1 et DATE2 pour obtenir le nombre d'heures dans oracle. Avez vous une idée ? Merci beaucoup |
|
|
00
|
|
|
#6 |
![]() ![]() |
La soustraction de deux dates renvoie un résultat en nombre de jour.
Il suffit donc de le multiplier par 24. À vous de voir ensuite si vous désirez un arrondi ou un truncate de ce nombre : Code :
SELECT (ol.load_date - ah.import_date) * 24 AS heures_diff
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Chercheur en informatique Inscription : juillet 2011 Messages : 26 ![]() |
Citation:
Merci beaucoup .. Oracle me retourne un invalid number. Est-ce que c'est lié au format du champ date ? Encore merci |
|
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
de quel type sont vos colonnes load_date et import_date ?
Si ce sont des char / varchar ne cherchez pas plus loin. |
|
|
00
|
|
|
#9 | |
|
Invité de passage
![]() Chercheur en informatique Inscription : juillet 2011 Messages : 26 ![]() |
Citation:
La demande a évoluée depuis hier, en effet, je dois enlever également le nombre de jours NON OUVRE qui se trouve dans une table de référence : DATE TIME ; OUVRE DD/MM/YYYY ; 0 ce qui signifie non OUVRE et 1 pour OUVRE Est-ce que je dois passer par un count distinct des non ouvrés et l'intégrer dans ma différence ? Merci |
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
pourquoi un distinct ?
Mais une sous requête oui ca me semble le plus intéressant |
|
|
00
|
|
|
#11 | ||
|
Invité de passage
![]() Chercheur en informatique Inscription : juillet 2011 Messages : 26 ![]() |
C'est bon un exemple ci dessous
Cdt, Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com