IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Analyse des absences salariées


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Analyse des absences salariées
    Bonjour à tous,

    Je bloque sur une problématique où je ne trouve pas de solution élégante et pérenne.
    J'ai une table de fait avec par salarié, la date de début d'absence (DateDebutAbsence), la date de fin d'absence (DateFinAbsence).
    J'aurais souhaité faire une analyse dans une table d’agrégat des absences en les analysants par année. Exemple: Savoir que le salarié X à été absent 10 jours en 2013 et 23 en 2014.
    Quand l'année de la date de début et de fin sont les mêmes, c'est pas compliqués, j'ai un case when et je fais un DateDiff (en sommant ensuite si il y en a eu plusieurs dans la même année)
    Ca se complique quand l'année est différente (absence de plusieurs années). J'avais pensé à ajouter une ligne supplémentaire par Différence d'année pour chaque salarié (Exemple: Salarié Toto absent du 10/02/2013 au 05/01/2014 aura deux lignes dans l'agrégat: Toto/2013/325 et Toto/2014/10). Mais je suis persuadé qu'il y a plus élégant comme solution
    J'ai une méthode qui consisterait à utiliser les curseurs mais ca va être une jolie usine à gaz (sans parler de l'instabilité)


    Deux problématiques se posent à moi:
    - Comment résoudre le problème de l'absence à cheval sur deux dates?
    - La datediff que je fais entre mes absences prends en compte des fausses absences, comme les week ends. Comment puis je faire pour ne pas les considérer si ce n'est en soustrayant par le nombre correspondant à (2 * le plus grand facteur de 7)

    Si certains se sont déjà cassés les dents sur ce sujet, je suis preneur : )

    Merci et bonne journée !

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Comme tu souhaites avoir le résultat par année, tu peux faire un datediff, non pas sur la date de début et de fin (auquel cas tu vas avoir des soucis sur les années qui se chevauche), mais sur :
    • Le max entre le 01/01/ANNEE et le début de la période d'arrêt ;
    • Le min entre le 31/12/ANNEE et la fin de la période d'arrêt.


    Ainsi, tu évites un case pour le choix de la date de début et de fin. Il faudra juste faire attention de ne prendre que les datediff positif au moment de sommer par année.

    La datediff que je fais entre mes absences prends en compte des fausses absences, comme les week ends. Comment puis je faire pour ne pas les considérer si ce n'est en soustrayant par le nombre correspondant à (2 * le plus grand facteur de 7)
    J'ai vu récemment un sujet passé sur le forum, justement sur la non prise en compte du week-end.
    Après, le soucis que je vois, c'est que si tu ne tiens pas compte du week-end, qu'en est-il des jours fériés ? Si tu dois en tenir compte, alors il te faut une table à part qui contiendra les jours non travaillés (et autant y inclure les week-end, comme ça, tu feras d'une pierre deux coups).
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Citation Envoyé par dorinf Voir le message
    et autant y inclure les week-end, comme ça, tu feras d'une pierre deux coups
    Oui, je dirai même d'une pierre trois coup, puisque ça résoudrait également le problème des absences à cheval sur plusieurs années.

    Un peu de de lecture...

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    J'ai eu un bug avant de comprendre. Effectivement, d'une pierre trois coups si on stocke dans cette table les jours travaillés ! Contrairement à ma suggestion initiale qui correspondait aux jours non travaillés.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Vous savez quoi? Vous êtes top vous deux !

    J'ai implémenté ta solution initiale Dorinf et ca marche nickel avec une boucle while.
    Je ferais la solution de la table Calendrier dans un second temps.

    Merci et bonne journée à vous deux !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conception interface d'analyse des intrusion
    Par jorgehas5 dans le forum Linux
    Réponses: 2
    Dernier message: 28/06/2006, 03h26
  2. Analyse des log web
    Par cjacquel dans le forum Statistiques
    Réponses: 1
    Dernier message: 10/04/2006, 22h46
  3. [TComPort] Analyse des données reçues avec ReadStr
    Par chourmo dans le forum Langage
    Réponses: 4
    Dernier message: 22/06/2005, 14h12
  4. doc sur l'analyse des algorithmes
    Par pinkle dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 28/05/2005, 12h59
  5. analyse des trames ?
    Par MDP dans le forum C++
    Réponses: 2
    Dernier message: 11/03/2005, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo