-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRequête_sql_p1.sql
156 lines (117 loc) · 3.93 KB
/
Requête_sql_p1.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
-- Création de la base de données
CREATE DATABASE sql_project_p1;
-- Création des tables
CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY,
customer_name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
city VARCHAR(50) NOT NULL
);
CREATE TABLE products (
products_id SERIAL PRIMARY KEY,
Products_name VARCHAR(50) NOT NULL,
category VARCHAR(50) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
CREATE TABLE orders (
orders_id SERIAL PRIMARY KEY,
customers_id INT REFERENCES customers(Customers_id),
products_id INT REFERENCES products(products_id),
order_date DATE NOT NULL
);
CREATE TABLE payments (
payments_id SERIAL PRIMARY KEY,
orders_id INT REFERENCES orders(orders_id),
amount DECIMAL(10, 2) NOT NULL,
payments_methodes VARCHAR(50) NOT NULL
);
-- Ajout des données aux tables
INSERT INTO customers (customers_name, email, city)
VALUES
('Amoin alice', '[email protected]', 'Abidjan'),
('jean kouadio', '[email protected]','Bouaké'),
('fatou camara', '[email protected]', 'Yamoussoukro'),
('eric bamba','ericbamgmail.com', 'San-pedro'),
('aminata traoré', '[email protected]', 'Korhogo'),
('gue robert', 'robertjoieyahoo.com', 'Man'),
('zagba cédric', '[email protected]', 'Abidjan'),
('moayé aline', '[email protected]', 'Dimbokro'),
('touré koffi', '[email protected]', 'Tanda'),
('Gbali zady', '[email protected]', 'Gagnoa');
INSERT INTO products (products_name, category, price)
VALUES
('Sac à main', 'Accessoires', 50.00),
('Pantalon', 'Vêtements', 25.00),
('Colier', 'Accessoires', 8.00),
('Ordinateur', 'Electronique', 150.00),
('Téléphone', 'Electronique', 99.00),
('Veste', 'Vêtements', 77.00),
('Bracelet', 'Accessoires', 7.00),
('Robe', 'Vêtements', 5.00),
('Ecouteurs', 'Electronique', 1.00),
('Boubou', 'Vêtements', 45.00);
INSERT INTO orders (customers_id, products_id, orders_date)
VALUES
(1,1,'2024-12-2'),
(2,2,'2024-12-6'),
(3,3,'2024-12-7'),
(4,4,'2024-12-10'),
(5,5,'2024-12-11'),
(6,6,'2024-12-13'),
(7,7,'2024-12-15'),
(8,8,'2024-12-17'),
(9,9,'2024-12-20'),
(10,10,'2024-12-22');
INSERT INTO payments (orders_id, amount, payments_methodes)
VALUES
(1, 50.00, 'Carte Bancaire'),
(2, 25.00, 'Mobile money'),
(3, 8.00, 'Espèces'),
(4, 150.00,'Carte Bancaire'),
(5, 99.00, 'Carte Bancaire'),
(6, 77.00, 'Mobile money'),
(7, 7.00, 'Espèces'),
(8, 5.00, 'Espèces'),
(9, 1.00, 'Mobile money'),
(10, 45, 'Carte Bancaire');
-- Étape 1 : Analyse exploratoire des données (EDA)
-- Q1 : nombre total de clients
SELECT COUNT(*) AS TotalClients FROM customers;
-- Q2: nombre total de produits
SELECT COUNT(*) AS TotalProducts FROM products;
-- Q3: nombre total de commandes
SELECT COUNT(*) AS TotalOrders FROM orders;
-- Q4: Chiffres d'affaires total
SELECT SUM(Amount) AS TotalRevenue FROM payments;
-- Q5: Répartition des paiements par méthode
SELECT payment_methodes, COUNT(*) AS PaymentCount
FROM payments
GROUP BY payment_methodes
ORDER BY PaymentCount DESC;
-- Étape 2 : Requêtes commerciales spécifiques
-- Q1: Clients ayant dépensé le plus
SELECT c.customer_name, SUM(p.amount) AS TotalSpent
FROM customers c
JOIN orders o ON c.customers_id = o.customers_id
JOIN payments p ON o.orders_id = p.orders_id
GROUP BY c.customer_name
ORDER BY TotalSpent DESC;
-- Q2: Produits les plus vendus par catégorie
SELECT p.category AS categorie, p.products_name AS produit,
SUM(py.amount) AS total_revenu
FROM products p
JOIN orders o ON p.products_id = o.products_id
JOIN payments py ON o.orders_id = py.orders_id
GROUP BY p.category, p.products_name
ORDER BY p.category, total_revenu DESC;
-- Q3:Top 3 des villes avec le plus de commandes
SELECT c.city, COUNT(o.orders_id) AS OrderCount
FROM customers c
JOIN orders o ON c.customers_id = o.customers_id
GROUP BY c.city
ORDER BY OrderCount DESC;
-- Q4: Chiffre d’affaires par méthode de paiement
SELECT payments_methodes, SUM(amount) AS TotalRevenue
FROM payments
GROUP BY payments_methodes
ORDER BY TotalRevenue DESC;