Dapatkan pekerja yang tidak mendaftar masuk selama 11 hari berturut-turut
P粉103739566
2023-08-18 09:31:19
<p>Saya cuba mendapatkan pekerja daripada pangkalan data yang tidak menandakan kehadiran selama 11 hari berturut-turut,
Untuk ini saya mempunyai jadual pekerja dan jadual kehadiran tetapi masalah yang saya ada dengan ini ialah tiada rekod dalam jadual kehadiran jadi bagaimana saya boleh mendapatkan</p>
<p>Saya mencuba banyak pertanyaan, beberapa daripadanya adalah seperti berikut: </p>
<pre class="brush:php;toolbar:false;">SELECT e.name, e.full_name
DARI tabPekerja e
KIRI SERTAI (
PILIH
pekerja, pekerja
MIN(tarikh_kehadiran) SEBAGAI tarikh_kehadiran pertama
DARI tabKehadiran
KUMPULAN MENGIKUT pekerja
) ar ON e.nama = ar.pekerja
DI MANA ar.first_attendance_date IS NULL ATAU
TIDAK WUJUD (
PILIH 1
DARI tabKehadiran
WHERE pekerja = e.nama
DAN tarikh_kehadiran >= ar.tarikh_kehadiran_pertama
DAN tarikh_kehadiran <DATE_ADD(ar.first_attendance_date, INTERVAL 11 DAY)
)</pra>
<p>Pertanyaan lain:</p>
<pre class="brush:php;toolbar:false;">SELECT e.name, COUNT(a.`attendance_date`), COUNT(e.`name`) daripada tabEmployee e
LEFT JOIN tabKehadiran a ON e.name = a.`pekerja`
DI MANA a.`pekerja` ADALAH NULL
KUMPULAN OLEH e.`name`</pre>
<p><br /></p>
Menggunakan fungsi
LAG()
analisis, kita boleh mencuba:Strategi asas di sini adalah untuk menjana ketinggalan (nilai berturut-turut sebelumnya) tarikh kehadiran dalam CTE. Kami kemudian hanya melaporkan pekerja dengan jurang 11 hari atau lebih lama.