Nombre de Retard
amikove
-
Amikove -
Amikove -
Bonjour tout le monde !!!!!!!!!!
Je Suis en Stage et j'aimerais calculer le nombre de retards d'un employé
On ne prend en considération un retard que quand l'employé dépasse 8:15:00.
sachant que je dispose de la base de données suivante:
MAtricule | Nom | MaDate | Etat
----------------------------------------------------------------------------------------------------------
1 | popo | 01/01/2001 08:00 | Entree
1 | popo | 01/01/2001 08:10 | Sortie
1 | popo | 01/01/2001 08:13 | Entree
2 | papa | 01/01/2001 08:15 | Entree
3 | pcpc | 01/01/2001 08:30 | Entree
1 | popo | 01/01/2001 12:00 | Sortie
2 | papa | 01/01/2001 13:00 | Sortie
3 | pcpc | 01/01/2001 13:15 | Sortie
P.S: Je travaille avec ASP.NET
voila la requete que j'ai pu faire donc si vous pouvez m'aider merci d'avance
SELECT DISTINCT MAtricule, Nom, MIN(CONVERT(datetime ,Madate, 108)) As [inf],
CONVERT(varchar(20), MaDate, 108) As [time],
FROM Matable
WHERE CONVERT(varchar, Madate, 103) = '02/01/2007'
AND readerdescription like 'Entree'
GROUP BY MAtricule, Nom, Madate
HAVING (CONVERT(varchar(20), Madate, 108)) > '08:15:00.00'
ça marche mais le problème c'est qu'elle me retourne pour un employé tous les entrées apré 08h15, é moi je veux seulement le premier
Je Suis en Stage et j'aimerais calculer le nombre de retards d'un employé
On ne prend en considération un retard que quand l'employé dépasse 8:15:00.
sachant que je dispose de la base de données suivante:
MAtricule | Nom | MaDate | Etat
----------------------------------------------------------------------------------------------------------
1 | popo | 01/01/2001 08:00 | Entree
1 | popo | 01/01/2001 08:10 | Sortie
1 | popo | 01/01/2001 08:13 | Entree
2 | papa | 01/01/2001 08:15 | Entree
3 | pcpc | 01/01/2001 08:30 | Entree
1 | popo | 01/01/2001 12:00 | Sortie
2 | papa | 01/01/2001 13:00 | Sortie
3 | pcpc | 01/01/2001 13:15 | Sortie
P.S: Je travaille avec ASP.NET
voila la requete que j'ai pu faire donc si vous pouvez m'aider merci d'avance
SELECT DISTINCT MAtricule, Nom, MIN(CONVERT(datetime ,Madate, 108)) As [inf],
CONVERT(varchar(20), MaDate, 108) As [time],
FROM Matable
WHERE CONVERT(varchar, Madate, 103) = '02/01/2007'
AND readerdescription like 'Entree'
GROUP BY MAtricule, Nom, Madate
HAVING (CONVERT(varchar(20), Madate, 108)) > '08:15:00.00'
ça marche mais le problème c'est qu'elle me retourne pour un employé tous les entrées apré 08h15, é moi je veux seulement le premier
A voir également:
- Nombre de Retard
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Nombre de page - Guide
- Nombre de caractères word - Guide
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? ✓ - Forum Excel
4 réponses
Bonsoir,
Qu'utilises tu comme base de données ?
Si tu utilises Oracle alors la solution est la suivante :
SELECT *
FROM (
SELECT DISTINCT MAtricule, Nom, MIN(CONVERT(datetime ,Madate, 108)) As [inf],
CONVERT(varchar(20), MaDate, 108) As [time],
FROM Matable
WHERE CONVERT(varchar, Madate, 103) = '02/01/2007'
AND readerdescription like 'Entree'
GROUP BY MAtricule, Nom, Madate
HAVING (CONVERT(varchar(20), Madate, 108)) > '08:15:00.00'
)
WHERE ROWNUM = 1
Qu'utilises tu comme base de données ?
Si tu utilises Oracle alors la solution est la suivante :
SELECT *
FROM (
SELECT DISTINCT MAtricule, Nom, MIN(CONVERT(datetime ,Madate, 108)) As [inf],
CONVERT(varchar(20), MaDate, 108) As [time],
FROM Matable
WHERE CONVERT(varchar, Madate, 103) = '02/01/2007'
AND readerdescription like 'Entree'
GROUP BY MAtricule, Nom, Madate
HAVING (CONVERT(varchar(20), Madate, 108)) > '08:15:00.00'
)
WHERE ROWNUM = 1
N'ayant pas SQL Server sous la main je te propose ceci :
SELECT *
FROM (
SELECT DISTINCT MAtricule, Nom, MIN(CONVERT(datetime ,Madate, 108)) As [inf],
CONVERT(varchar(20), MaDate, 108) As [time],
FROM Matable
WHERE CONVERT(varchar, Madate, 103) = '02/01/2007'
AND readerdescription like 'Entree'
GROUP BY MAtricule, Nom, Madate
HAVING (CONVERT(varchar(20), Madate, 108)) > '08:15:00.00'
)
WHERE DENSE_RANK() OVER(ORDER BY Matricule)
Je t'invite aussi à lire le chapitre 1.7 du site suivant : https://sqlpro.developpez.com/sqlserver-2005/?page=sql
SELECT *
FROM (
SELECT DISTINCT MAtricule, Nom, MIN(CONVERT(datetime ,Madate, 108)) As [inf],
CONVERT(varchar(20), MaDate, 108) As [time],
FROM Matable
WHERE CONVERT(varchar, Madate, 103) = '02/01/2007'
AND readerdescription like 'Entree'
GROUP BY MAtricule, Nom, Madate
HAVING (CONVERT(varchar(20), Madate, 108)) > '08:15:00.00'
)
WHERE DENSE_RANK() OVER(ORDER BY Matricule)
Je t'invite aussi à lire le chapitre 1.7 du site suivant : https://sqlpro.developpez.com/sqlserver-2005/?page=sql
voila la bonne requete :)
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
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 !
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
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 !