Obtenez les employés qui ne se sont pas pointés pendant 11 jours consécutifs
P粉103739566
P粉103739566 2023-08-18 09:31:19
0
1
453
<p>J'essaie d'obtenir des employés de la base de données qui n'ont pas marqué de présence pendant 11 jours consécutifs, Pour cela, j'ai une table des employés et une table de présence, mais le problème que j'ai avec cela est qu'il n'y a aucun enregistrement dans la table de présence, alors comment puis-je obtenir</p> <p>J'ai essayé de nombreuses requêtes, certaines d'entre elles sont les suivantes : </p> <pre class="brush:php;toolbar:false;">SELECT e.name, e.full_name DE l'ongletEmployé e JOINT GAUCHE ( SÉLECTIONNER employé, employé MIN(attendance_date) AS first_attendance_date DE l'ongletParticipation GROUPER PAR employé ) ar ON e.name = ar.employé OÙ ar.first_attendance_date EST NULL OU N'EXISTE PAS ( SÉLECTIONNER 1 DE l'ongletParticipation OÙ employé = e.nom ET fréquentation_date >= ar.first_attendance_date ET date_de présence < DATE_ADD(ar.first_attendance_date, INTERVAL 11 JOUR) )</pré> <p>Une autre requête :</p> <pre class="brush:php;toolbar:false;">SELECT e.name, COUNT(a.`attendance_date`), COUNT(e.`name`) depuis l'ongletEmployee e Onglet LEFT JOINAttendance a ON e.name = a.`employee` OÙ a.`employé` EST NULL GROUP BY e.`name`</pre> <p><br /></p>
P粉103739566
P粉103739566

répondre à tous(1)
P粉231079976

Grâce à la fonction d'analyse LAG(), nous pouvons essayer :

WITH cte AS (
    SELECT e.name, e.full_name,
           LAG(a.attendance_date) OVER (PARTITION BY a.employee
                                        ORDER BY a.attendance_date) AS lag_attendance_date
    FROM tabAttendance a
    INNER JOIN tabEmployee e ON e.name = a.employee
)

SELECT DISTINCT name, full_name
FROM cte
WHERE DATEDIFF(attendance_date, lag_attendance_date) > 11;

La stratégie de base ici est de générer le décalage (valeur consécutive précédente) de la date de présence en CTE. Nous ne signalons alors que les salariés avec un écart de 11 jours ou plus.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!