Nombre de retards

Résolu
lamziouaq2
Messages postés
17
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
11 mars 2008
- 19 févr. 2008 à 10:46
LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
- 22 févr. 2008 à 13:20
Bonjour tout le monde !!!!!!!!!!
On aimerait calculer le nombre de retards d'un employé sachant qu'on dispose de base de données suivante:




 



      MAtricule  |      Nom       |                 Date           |    Etat
      1                  |      popo       |   01/01/2001 08:15     |      Entree
       2                 |       papa      |    01/01/2001  08:00    |      Entree
      3                  |       pipi        |     01/01/2001 08:30    |     Entree
      1                  |       popo      |    01/01/2001 12:00     |     Sortie
      2                  |        papa     |    01/01/2001  13:00    |    Sortie
      3                  |         pipi      |   01/01/2001 13:15      |    Sortie



On ne prend en consideration un retard que quand l'employé depasse les 8h15.



calculer le nombre de retards à l'aide d'une requete SQL



P.S: On travaille avec ASP.NET

13 réponses

lamziouaq2
Messages postés
17
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
11 mars 2008

22 févr. 2008 à 11:44
Voila la bonne Reponse Merci bcp pour votre effort

SELECT MAtricule, Nom, Min (CONVERT(datetime ,Madate, 108)) 

FROM Matable
WHERE CONVERT(varchar, Madate, 103) = '02/01/2007'
and (CONVERT(varchar(20), Madate, 108)) > '08:15:00.00'
AND readerdescription = 'Entree'
GROUP BY MAtricule, Nom

pas de having qui porte sur des condition après le groupement.
Le groupement "group by" ne doit porter que sur les colonnes en commun sur les résultats regroupés (+ les fonctions d'aggrégation min, max ...).

si tu met la date ou l'heure dans le groupement, vur que c'est différent pour tout le monde, ça ne regroupe plus rien

d'autre part, on emploi distinct ou group by, mais pas les 2 à la fois.

est ce possible d'executer la requete pour tout un mois, pas seulment pour un seul jour donné

alors pour chaque employé On aura...nombre de retards é aussi Le cumule des retards

Merci beaucoup !
3
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
19 févr. 2008 à 10:50
Salut,
Et c'est quoi la question????
Ca ressemble à une question d'exercice....

Vous travaillez en ASP.NET et vous postez sur VBFrance ...

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_bouf
Messages postés
114
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
20 mars 2008

19 févr. 2008 à 11:33
essai avec un truc du genre :
select count(popo) from [ta table] where date >#08:15#
la seule chose pour que cela fonctionne bien, il faudrait que tu sépares date et heure dans 2 champs distincts

Cliff le bouffeur
0
lamziouaq2
Messages postés
17
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
11 mars 2008

19 févr. 2008 à 11:54
voila la requete que j'ai pu faire





select Matricule, Nom ,min(convert(datetime,date,108)) as  [inf] From Matable <?XML:NAMESPACE PREFIX = O /??>











where convert(varchar(50),date,103)='01/01/2001'











and  Etat like 'Entree'










having inf >'08:15:00'  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
19 févr. 2008 à 12:40
Salut,
En plus de la remarque de bouf,
dans ce genre " d' exercice" il faut raisonner par étape.
1° -Extraire les lignes dont l' Etat est Entree.
2° -Faire un regroupement par date
3° -Calculer le nbre de minutes de retard de la façon suivante:
   Si Entree > 08:15 alors
        Entree - 08:15
   Sinon
       0
   Fin si
4° Faire un regroupement sur un employer, somme de retard pour une période donnée.


Si tu arrives à faire ça en une seule expression?
 alors t' es un champion !





<hr />

... Il y' en a même qui m' ont vu voler.
<hr />
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
19 févr. 2008 à 13:52
déplacer vers aspfr.com ou sqlfr.com, mon coeur balance...

(ps : l'idée de 2 champs date / heure peut t'éviter pas mal de manip...)
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
lassaad83
Messages postés
148
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
1 décembre 2009

19 févr. 2008 à 18:18
T'aurais peut être du poser ta question sur www.sqlfr.com ...




Cependant voila ma version :





SELECT CONVERT(VARCHAR(10),MADATE,103) [LE], NOM ,
DATEDIFF(MINUTE,CONVERT(VARCHAR(10),MADATE,103)+' 08:15',MADATE) [NOMBRE DE MINUTE DE RETARD]
FROM CODESOURCE
WHERE UPPER(ETAT) = 'ENTREE'





--> ICI TU CHOISIE UNE DATE PRÉCICE

AND  CONVERT(VARCHAR(10),MADATE,103)='01/01/2001'




--> OU BIEN TU CHOISIE UNE PÉRIODE

--AND  CONVERT(VARCHAR(10),MADATE,103) BETWEEN '01/01/2001' AND '19/02/2008'



--> POUR FAIRE UNE REHERCHE PAR MATRICULE

AND MATRICULE = 1

GROUP BY MADATE,NOM
0
lamziouaq2
Messages postés
17
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
11 mars 2008

20 févr. 2008 à 16:05
 Merci bcp les amis

Voila la requete que j'qi pu faire mais celle ci m'apporte toute les entrees apres 8:15:00 mais ce que je veux c'est n'est pas pour tout les entree mais seulement pour la 1er entrree  du date

select distinct employeeNumber, lastname ,min(convert(datetime,hostdate,108)) as  [inf],convert(varchar(20),hostdate,108) as time From feuil1
where convert(varchar,hostdate,103)='02/01/2007'
and  readerdescription like '%ent%'
group by employeeNumber,lastname,hostdate
having  (convert(varchar(20),hostdate,108)) > '08:15:00.00' 
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
20 févr. 2008 à 16:21
... LIMIT 1;
0
lamziouaq2
Messages postés
17
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
11 mars 2008

20 févr. 2008 à 16:27
j'ai pas bien compris mon AMI  PCPT ou je vais mettre la limit ????????
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
49
20 févr. 2008 à 17:53
ummm beh suite à ... je dirai... à la suite non? ^^

SELECT DISTINCT employeeNumber, lastname, MIN(CONVERT(datetime ,hostdate, 108)) As [inf], CONVERT(varchar(20), hostdate, 108) As [time]
FROM feuil1
WHERE CONVERT(varchar, hostdate, 103) = '02/01/2007'
AND readerdescription like '%ent%'
GROUP BY employeeNumber, lastname, hostdate
HAVING (CONVERT(varchar(20), hostdate, 108)) > '08:15:00.00'
LIMIT 1;

celà dit (4ème fois), tu n'es pas sur le bon site !!
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
amikove
Messages postés
42
Date d'inscription
samedi 11 novembre 2006
Statut
Membre
Dernière intervention
15 juin 2008

22 févr. 2008 à 09:57
je conné pas ce LIMIT 1
par contre essai

Select Top 1 Matricule ...

ca va te selectionner le 1er enregistrement comme tu veux
0
LIBRE_MAX
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
22 févr. 2008 à 13:20
c' est ça la question !
ton expression ne cumule rien . Il n' ya pas d' opération d' agrégat (SommeDeReatrd) pour une période donnée.
Il te manque deux champs(généres)
-Différence entre Heure d' entrée et 08:15
-Mois(DatePointage)

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
0