Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
Database Management System Project
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Bouchaira Neirouz
Database Management System Project
Commits
fe8c7c1a
Commit
fe8c7c1a
authored
7 months ago
by
Bouchaira Neirouz
Browse files
Options
Downloads
Patches
Plain Diff
question 5 et 6
parent
d858729d
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
donnees/Question 4.ipynb
+18
-0
18 additions, 0 deletions
donnees/Question 4.ipynb
donnees/company.db
+0
-0
0 additions, 0 deletions
donnees/company.db
donnees/generation_donnees.ipynb
+204
-0
204 additions, 0 deletions
donnees/generation_donnees.ipynb
with
222 additions
and
0 deletions
donnees/Question 4.ipynb
0 → 100644
+
18
−
0
View file @
fe8c7c1a
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
%% Cell type:code id: tags:
```
```
This diff is collapsed.
Click to expand it.
donnees/company.db
+
0
−
0
View file @
fe8c7c1a
No preview for this file type
This diff is collapsed.
Click to expand it.
donnees/generation_donnees.ipynb
+
204
−
0
View file @
fe8c7c1a
...
...
@@ -92,6 +92,210 @@
"conn.commit()\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Requete SQL 5 et 6 "
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>NUMERO_EMPLOYE</th>\n",
" <th>NOM</th>\n",
" <th>PRENOM</th>\n",
" <th>DATE_DEBUT</th>\n",
" <th>PRIME_NOEL</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Dubois</td>\n",
" <td>Michel</td>\n",
" <td>2020-11-13</td>\n",
" <td>2160.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>Bouchaira</td>\n",
" <td>Neirouz</td>\n",
" <td>2021-11-13</td>\n",
" <td>2160.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>Caty</td>\n",
" <td>Jeanne</td>\n",
" <td>2019-11-03</td>\n",
" <td>3712.50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>5</td>\n",
" <td>Mourin</td>\n",
" <td>Julie</td>\n",
" <td>2023-11-13</td>\n",
" <td>2126.25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>7</td>\n",
" <td>Jura</td>\n",
" <td>Charlie</td>\n",
" <td>2022-11-28</td>\n",
" <td>3712.50</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" NUMERO_EMPLOYE NOM PRENOM DATE_DEBUT PRIME_NOEL\n",
"0 1 Dubois Michel 2020-11-13 2160.00\n",
"1 2 Bouchaira Neirouz 2021-11-13 2160.00\n",
"2 3 Caty Jeanne 2019-11-03 3712.50\n",
"3 5 Mourin Julie 2023-11-13 2126.25\n",
"4 7 Jura Charlie 2022-11-28 3712.50"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"\n",
"chrismas_day = datetime(2024, 12, 25)\n",
"cursor.execute(\"SELECT NUMERO_EMPLOYE, NOM, PRENOM, CS_PRODUCTION,CS_JOURNEE, DATE_DEBUT FROM EMPLOYE\")\n",
"employees = cursor.fetchall()\n",
"# Create a list to store the data\n",
"prime_totale = []\n",
"prime_partielle=[]\n",
"\n",
"# Calculate the prime de noel for each employee\n",
"for employee in employees:\n",
" NUMERO_EMPLOYE, NOM, PRENOM,CS_PRODUCTION,CS_JOURNEE, DATE_DEBUT = employee\n",
" start_date = datetime.strptime(DATE_DEBUT, '%Y-%m-%d')\n",
" delta = chrismas_day - start_date\n",
" if delta.days >= 365:\n",
" if CS_JOURNEE is not None:\n",
" cursor.execute(f\"SELECT SALAIRE_SEMAINE_BASE FROM GRILLE_SALAIRE_HORAIRE WHERE CS_HORAIRE = {CS_JOURNEE}\")\n",
" salaire_base=cursor.fetchone()[0]\n",
" prime_noel= salaire_base*4.5\n",
" prime_totale.append((NUMERO_EMPLOYE, NOM, PRENOM, DATE_DEBUT, prime_noel))\n",
" if CS_PRODUCTION is not None:\n",
" cursor.execute(f\"SELECT SALAIRE_SEMAINE_BASE FROM GRILLE_SALAIRE_PROD WHERE CS_PRODUCTION = {CS_PRODUCTION}\")\n",
" salaire_base=cursor.fetchone()[0]\n",
" prime_noel= salaire_base*4.5\n",
" prime_totale.append((NUMERO_EMPLOYE, NOM, PRENOM, DATE_DEBUT, prime_noel))\n",
" else:\n",
" if CS_JOURNEE is not None:\n",
" cursor.execute(f\"SELECT SALAIRE_SEMAINE_BASE FROM GRILLE_SALAIRE_HORAIRE WHERE CS_HORAIRE = {CS_JOURNEE}\")\n",
" salaire_base=cursor.fetchone()[0]\n",
" prime_noel= salaire_base * 100 * delta.days / 365 \n",
" prime_partielle.append((NUMERO_EMPLOYE, NOM, PRENOM, DATE_DEBUT, prime_noel))\n",
" if CS_PRODUCTION is not None:\n",
" cursor.execute(f\"SELECT SALAIRE_SEMAINE_BASE FROM GRILLE_SALAIRE_PROD WHERE CS_PRODUCTION = {CS_PRODUCTION}\")\n",
" salaire_base=cursor.fetchone()[0]\n",
" prime_noel= salaire_base*100 * delta.days / 365 \n",
" prime_partielle.append((NUMERO_EMPLOYE, NOM, PRENOM, DATE_DEBUT, prime_noel))\n",
"\n",
"\n",
"# Create the dataframe\n",
"prime_totale = pd.DataFrame(prime_totale, columns=['NUMERO_EMPLOYE','NOM', 'PRENOM' ,'DATE_DEBUT', 'PRIME_NOEL'])\n",
"prime_partielle = pd.DataFrame(prime_partielle, columns=['NUMERO_EMPLOYE','NOM', 'PRENOM' , 'DATE_DEBUT', 'PRIME_NOEL'])\n",
"prime_totale.head()\n"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>NUMERO_EMPLOYE</th>\n",
" <th>NOM</th>\n",
" <th>PRENOM</th>\n",
" <th>DATE_DEBUT</th>\n",
" <th>PRIME_NOEL</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>6</td>\n",
" <td>Bowers</td>\n",
" <td>Matthew</td>\n",
" <td>2024-11-20</td>\n",
" <td>4602.739726</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" NUMERO_EMPLOYE NOM PRENOM DATE_DEBUT PRIME_NOEL\n",
"0 6 Bowers Matthew 2024-11-20 4602.739726"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"prime_partielle.head()"
]
}
],
"metadata": {
...
...
%% 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
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment