Skip to content
Snippets Groups Projects
Commit fe8c7c1a authored by Bouchaira Neirouz's avatar Bouchaira Neirouz
Browse files

question 5 et 6

parent d858729d
No related branches found
No related tags found
No related merge requests found
%% Cell type:code id: tags:
```
```
No preview for this file type
%% Cell type:code id: tags:
``` python
import sqlite3
# Connect to the database
conn = sqlite3.connect('company.db')
# Create a cursor object
cursor = conn.cursor()
print("Connected to company.db")
```
%% Output
Connected to company.db
%% Cell type:code id: tags:
``` python
## Production
from datetime import datetime, timedelta
# Fetch all employees
cursor.execute("SELECT NUMERO_EMPLOYE, CS_PRODUCTION,CS_JOURNEE, DATE_DEBUT FROM EMPLOYE")
employees = cursor.fetchall()
cursor.execute("SELECT MAX(NUM_LOG_JOUR_PROD) FROM LOG_JOURNEE_PROD")
last_log_num_prod = cursor.fetchone()[0] or 0
cursor.execute("SELECT MAX(NUM_LOG_JOUR_JOUR) FROM LOG_JOURNEE_JOUR")
last_log_num_jour = cursor.fetchone()[0] or 0
# Loop through each employee
for employee in employees:
NUMERO_EMPLOYE, CS_PRODUCTION,CS_JOURNEE, DATE_DEBUT = employee
start_date = datetime.strptime(DATE_DEBUT, '%Y-%m-%d')
end_date = datetime.today()
delta = end_date - start_date
if CS_JOURNEE is not None:
cursor.execute(f"SELECT DEBUT_SAMEDI FROM GRILLE_SALAIRE_HORAIRE WHERE CS_HORAIRE = {CS_JOURNEE}")
debut_samedi = cursor.fetchone()[0]
for i in range(delta.days + 1):
datei = start_date + timedelta(days=i)
week_day = datei.weekday()
if week_day == 6:
continue
if week_day == 5:
last_log_num_jour += 1
cursor.execute("""
INSERT INTO LOG_JOURNEE_JOUR (NUM_LOG_JOUR_JOUR, DATE,WEEK_DAY, NUMERO_EMPLOYE,HEURE_ARRIVEE, HEURE_FIN, NB_HEURES,NB_HEURES_SUP, RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?,?)""",(last_log_num_jour, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,str(debut_samedi)+':00',str(debut_samedi+3)+':00',3,0, False ) )
else:
last_log_num_jour += 1
cursor.execute("""
INSERT INTO LOG_JOURNEE_JOUR (NUM_LOG_JOUR_JOUR, DATE,WEEK_DAY, NUMERO_EMPLOYE,HEURE_ARRIVEE, HEURE_FIN, NB_HEURES,NB_HEURES_SUP, RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?,?)""",(last_log_num_jour, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,str(8)+':00',str(debut_samedi+9)+':00',9,0, False ) )
if CS_PRODUCTION is not None:
cursor.execute(f"SELECT PIECE_JOUR , DEBUT_SAMEDI FROM GRILLE_SALAIRE_PROD WHERE CS_PRODUCTION = {CS_PRODUCTION}")
piece_jour,debut_samedi = cursor.fetchone()
for i in range(delta.days + 1):
datei = start_date + timedelta(days=i)
week_day = datei.weekday()
if week_day == 6:
continue
if week_day == 5:
last_log_num_prod += 1
cursor.execute("""
INSERT INTO LOG_JOURNEE_PROD (NUM_LOG_JOUR_PROD, DATE,WEEK_DAY, NUMERO_EMPLOYE,NB_PIECES,NB_PIECES_SUP,HEURE_ARRIVEE,RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?)
""", (last_log_num_prod, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,piece_jour,0,str(debut_samedi)+':00',False ))
else:
last_log_num_prod += 1
cursor.execute("""
INSERT INTO LOG_JOURNEE_PROD (NUM_LOG_JOUR_PROD, DATE,WEEK_DAY, NUMERO_EMPLOYE,NB_PIECES,NB_PIECES_SUP,HEURE_ARRIVEE,RETARD)
VALUES (?, ?, ?,?, ?, ?, ?,?)
""", (last_log_num_prod, datei.strftime('%Y-%m-%d'),week_day, NUMERO_EMPLOYE,piece_jour,0,'08:00',False ))
# Commit the changes
conn.commit()
```
%% Cell type:markdown id: tags:
# Requete SQL 5 et 6
%% Cell type:code id: tags:
``` python
import pandas as pd
chrismas_day = datetime(2024, 12, 25)
cursor.execute("SELECT NUMERO_EMPLOYE, NOM, PRENOM, CS_PRODUCTION,CS_JOURNEE, DATE_DEBUT FROM EMPLOYE")
employees = cursor.fetchall()
# Create a list to store the data
prime_totale = []
prime_partielle=[]
# Calculate the prime de noel for each employee
for employee in employees:
NUMERO_EMPLOYE, NOM, PRENOM,CS_PRODUCTION,CS_JOURNEE, DATE_DEBUT = employee
start_date = datetime.strptime(DATE_DEBUT, '%Y-%m-%d')
delta = chrismas_day - start_date
if delta.days >= 365:
if CS_JOURNEE is not None:
cursor.execute(f"SELECT SALAIRE_SEMAINE_BASE FROM GRILLE_SALAIRE_HORAIRE WHERE CS_HORAIRE = {CS_JOURNEE}")
salaire_base=cursor.fetchone()[0]
prime_noel= salaire_base*4.5
prime_totale.append((NUMERO_EMPLOYE, NOM, PRENOM, DATE_DEBUT, prime_noel))
if CS_PRODUCTION is not None:
cursor.execute(f"SELECT SALAIRE_SEMAINE_BASE FROM GRILLE_SALAIRE_PROD WHERE CS_PRODUCTION = {CS_PRODUCTION}")
salaire_base=cursor.fetchone()[0]
prime_noel= salaire_base*4.5
prime_totale.append((NUMERO_EMPLOYE, NOM, PRENOM, DATE_DEBUT, prime_noel))
else:
if CS_JOURNEE is not None:
cursor.execute(f"SELECT SALAIRE_SEMAINE_BASE FROM GRILLE_SALAIRE_HORAIRE WHERE CS_HORAIRE = {CS_JOURNEE}")
salaire_base=cursor.fetchone()[0]
prime_noel= salaire_base * 100 * delta.days / 365
prime_partielle.append((NUMERO_EMPLOYE, NOM, PRENOM, DATE_DEBUT, prime_noel))
if CS_PRODUCTION is not None:
cursor.execute(f"SELECT SALAIRE_SEMAINE_BASE FROM GRILLE_SALAIRE_PROD WHERE CS_PRODUCTION = {CS_PRODUCTION}")
salaire_base=cursor.fetchone()[0]
prime_noel= salaire_base*100 * delta.days / 365
prime_partielle.append((NUMERO_EMPLOYE, NOM, PRENOM, DATE_DEBUT, prime_noel))
# Create the dataframe
prime_totale = pd.DataFrame(prime_totale, columns=['NUMERO_EMPLOYE','NOM', 'PRENOM' ,'DATE_DEBUT', 'PRIME_NOEL'])
prime_partielle = pd.DataFrame(prime_partielle, columns=['NUMERO_EMPLOYE','NOM', 'PRENOM' , 'DATE_DEBUT', 'PRIME_NOEL'])
prime_totale.head()
```
%% Output
NUMERO_EMPLOYE NOM PRENOM DATE_DEBUT PRIME_NOEL
0 1 Dubois Michel 2020-11-13 2160.00
1 2 Bouchaira Neirouz 2021-11-13 2160.00
2 3 Caty Jeanne 2019-11-03 3712.50
3 5 Mourin Julie 2023-11-13 2126.25
4 7 Jura Charlie 2022-11-28 3712.50
%% Cell type:code id: tags:
``` python
prime_partielle.head()
```
%% Output
NUMERO_EMPLOYE NOM PRENOM DATE_DEBUT PRIME_NOEL
0 6 Bowers Matthew 2024-11-20 4602.739726
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment