Contare solo più periodi consecutivi di assenza maggiori di 20 gg

di il
10 risposte

Contare solo più periodi consecutivi di assenza maggiori di 20 gg

Salve ho realizzato una query da due tabelle (nominativi + assenza) uno a molti, dove visualizzo i nominativi e relativi periodi con il conteggio dei giorni di assenza  per ciascun nominativo.

Vorrei visualizzare, magari in un altra query, solo i nominativi che abbiano superato i 20 gg di assenza in periodi consecutivi :

come si vede nell'esempio: Rossi MArio ha effettuato 4 periodi di assenza consecutivi ; Ferilli sabrina sono consecutivi, ma non superano 20 gg; Bianchi Mario e Pippo Baudo non sono consecutivi anche se superano 20gg.

Quindi vorrei vedere solo ROSSI Mario; 

queste sono le relazioni:

Grazie

10 Risposte

  • Re: Contare solo più periodi consecutivi di assenza maggiori di 20 gg

    Filtrare il risultato di una query mediante una condizione e' una delle operazioni piu' semplici che si possono fare, dove sta' la complicazione? 

    Non e' che per caso stai usando Access SENZA aver MAI letto un LIBRO? 

    Se e' così, FORSE e' il caso di provvedere. 

  • Re: Contare solo più periodi consecutivi di assenza maggiori di 20 gg

    13/12/2023 - migliorabile ha scritto:


    Filtrare il risultato di una query mediante una condizione e' una delle operazioni piu' semplici che si possono fare, dove sta' la complicazione?

    Forse lui non si riferisce a come filtrare la query, ma a che tipo di funzione utilizzare per calcolare i periodi consecutivi…

    Io aggiungerei due ulteriori campi alla maschera delle assenze (non so se ci sono gia'): uno per definire il tipo di assenza (ferie, infortunio, malattia, 104, AVIS, maternita', ecc.) ed un'altro per definire se il periodo inserito e' continuativo di uno precedente o se e' uno nuovo.

  • Re: Contare solo più periodi consecutivi di assenza maggiori di 20 gg

    Uhm… 

    In caso di assenza per malattia sarebbe opportuno distinguere i primi 3 giorni consecutivi al periodo e dal quarto all'ultimo giorno consecutivo.

    I primi 3 giorni sono a carico del datore di lavoro,gli  altri un po' all'inps un po' al datore di lavoro.

    Se sono giorni 104 sono a carico inps ecc…

    Io opterei per un calendario presenze e da quello estrapolare i dati per la tabella assenze.

    Userei una funzione o una stored procedure.

    Meglio una elaborazione a posteriori che estrapola le info e le associa alle tabelle interessate compresa quella del cedolino e per la comunicazione uniemens.

    A fine mesi elabori i dati, hai un registro presenze espandibile con i rilevatori di presenza e non ci pensi più.

    Comunque, in caso di malattia oltre il terzo giorno, l'ufficio paghe lo rileva dall'inps (sono quote che portano in detrazione al dm10), pertanto un lavoro superfluo.

    Per rispondere alla tua, non ti serve una query ma una sp o una funzione, la logica non è lineare da essere affidata ad una query.

  • Re: Contare solo più periodi consecutivi di assenza maggiori di 20 gg

    13/12/2023 - sihsandrea ha scritto:


    Io opterei per un calendario presenze e da quello estrapolare i dati per la tabella assenze.

    Condivido. Ha più senso creare un calendario e gestire assenze, presenze, ore di permesso, ecc. Fatto questo, tutto il resto diventa più gestibile, anche quello che chiedi.

  • Re: Contare solo più periodi consecutivi di assenza maggiori di 20 gg

    Considera che una query dovrebbe capire se dal 28 febbraio al 3 marzo sono:

    Competenza febbraio 1 o 2 giorni consecutivi se bisestile

    Competenza marzo 3 giorni consecutivi

    Competenza datore di lavoro 1 o 2 gg febbraio

    1 o 2 gg marzo

    Competenza inps 1 o 2 gg

    Ma se dal 28 al 1 è malattia

    Dal 2 al 3 è un permesso (maternità, puerperio, 104, funerale ecc…) il conteggio si interrompe.

    Considerando che dopo n giorni di assenza ingiustificata si può licenziare per giusta causa, io farei attenzione agli automatismi facili.

    Come ti ha suggerito Mailman, servono maggiori informazioni per abbozzare una query poco affidabile. 

    Meglio una procedura che accorda la costellazione di variabili che compone una gestione presenze.

    Per completezza:

    Assentarsi dal lavoro in maniera ingiustificata e oltre il termine previsto dal CCNL equivale a dimettersi. E' quanto previsto dal DdL Lavoro, licenziato dal Consiglio dei Ministri e in attesa di iniziare il suo iter parlamentare.

    Cioè se il ccnl prevede 2 gg di assenza ingiustificata il terzo giorno equivarrebbe a dimissione (non licenziamento).

    Per licenziare si paga un ticket all'inps pari a 500 euro per ogni anno o frazione di anno di lavoro per un massimo di tre anni (1500 euro).

  • Re: Contare solo più periodi consecutivi di assenza maggiori di 20 gg

    Vi ringrazio, per le Vs risposte e consigli… ma senza entrare nei contratti e/o normative di settore, la query che vi ho posto ovviamente è un esempio su quanto andrò ad applicare sul database che sto realizzando, più che altro è il concetto che vorrei capire come applicarlo.

    QUindi, ho due tabelle : una nominativi e l'altra assenze (che comprende varie tipologie di assenze) come mi è stato suggerito in altro post.

    Poi ho realizzato una query delle due tabelle prendendo i campi dalla tabella assenze , solo malattie;

    Vorrei che la query mi filtrasse solo i nominativi con periodi di assenza continuativi senza interruzione maggiori di 20 gg.

    Che condizione applicare?

    Grazie 

  • Re: Contare solo più periodi consecutivi di assenza maggiori di 20 gg

    Quello che ti è già stato detto non starei a ripeterlo, anche se non si comprende se lo hai capito tecnicamente, perchè non si tratta di quale CCNL viene applicato, concettualmente pur con le specificità tipiche i temi tecnici sono sempre gli stessi…

    In ogni caso molto probabilmente una query non sarà in grado di fare quanto chiedi con le varie casistiche che già ti sono state illustrate senza sviluppare una LOCAL UDF(Funzione Utente Locale), in quanto sicuramente non stai usando un RDBMS, tempi di esecuzione poco utili sarà lentissima soprattutto se scritta male…

    Detto questo e volendo veramente banalizzare l'argomento… usa questo suggerimento tanto per partire e poi ragionarci bene inserendo le varie casistiche del tuo settore, cosi da capire perchè e dove fallisce:

    Se la inserisci in SQL la scriverai così:

    DATEDIFF('d',[dal],[al])=20

    Se la inserisci come criterio in QBE(query builder):

    DATEDIFF('g';[dal];[al])=20

    Saluti

  • Re: Contare solo più periodi consecutivi di assenza maggiori di 20 gg

    13/12/2023 - @Alex ha scritto:


    DATEDIFF('d',[dal],[al])=20

    Ha una tabella dove:

    Pippo assente dal 1/02/23 al 3/02/23 dove dal è un campo e al un altro campo.

    Pippo rinnova il certificato malattia e risulta assente dal 4/02/23 al 20/02/23.

    In tuto ha 2 record assenze di pippo dal al (già sbagliato alla base).

    Datediff dal al trova 3gg (recod1) e 17gg (record2) non 20gg (record1 + record2) se non erro.

    Se decidi di fare soma record rischi di ottenere 20 con le assenze di pippo alle date dal 1/03/23 al 10/03/23 e dal 21/03/23 al 30/03/23

    Non c'è continuità e restano due record da 10 giorni di assenza. (Marzo sarebbe Assente x 10; presente x 10; assente x 10; presente x1).

    Modus operandi:

    Prendendo il valore “dal” del primo record, controllare se il record successivo ha valore "dal" consecutivo al valore “al” del precedente record, se si, calcolare la differenza e ripetere l'operazione col secondo e terzo record e così via fino alla fine del record.

    Il tutto per n persone, col dubbio incolmato se si parla di mese corrente o c'è continuità di assenza di due mesi consecutivi.

    In più, sempre senza poter indicare alla sql che natura hanno quelle assenze.

    Come suggerito, serve un campo che lega la continuità delle assenze tra i record.

    All'inserimento record controlli se l'attuale “dal” è consecutivo dell'ultima “al”. Se si, leggi il campo xy dell'ultima assenza e inserisci lo stesso valore al nuovo record di assenza (e magari anche il nr. Di giorni tanto scrivi il codice una volta e poi ci pensa la cpu)

    Alla query sum(giorni) where xy

    Proprio per semplificare al massimo.

  • Re: Contare solo più periodi consecutivi di assenza maggiori di 20 gg

    Ma stai spiegandolo a me…?

    Allora non hai letto bene quello che ho scritto…

  • Re: Contare solo più periodi consecutivi di assenza maggiori di 20 gg

    13/12/2023 - @Alex ha scritto:


    Ma stai spiegandolo a me…?

    Allora non hai letto bene quello che ho scritto…

    I primi 4 capoversi si… poi mi sono smarrito tra un'arancina e un'altra…. :))

    Sorry!

Devi accedere o registrarti per scrivere nel forum
10 risposte