Checkpoint requête de données
macdi011 opened this issue · comments
create database CELLOU_DIALL;
use CELLOU_DIALL;
create table customer (
customer_id int primary key,
customer_Name varchar(30)not null,
customer_Tel varchar(30) not null
);
insert into customer values (1, 'fatou','77120');
insert into customer values (2, 'cellou','77843' );
insert into customer values (3,'awa','77187');
select*from customer;
CREATE TABLE product (
product_id int primary key,
product_name varchar(30) not null,
catogory varchar(30) not null,
Price int NOT NULL
);
insert into product values (1, 'widget', 'SMARTPHONE',10), (2, 'gadget', 'ELECTRO',15 ),
(3,'dohickey','sante',20);
select*from product;
create table orders (
orders_id int primary key ,
product_id int ,
customer_id int ,
quantity int,
OrdersDate varchar(30) NOT NULL,
total_amount int,
constraint FK_customer foreign key (customer_id)references customer(customer_id),
constraint FK_product foreign key (product_id) references product(product_id)
);
insert into orders values (1,1,1,5, '28-01-2023','50');
insert into orders values (2,2,2,7,'20-01-2023','105');
insert into orders values (3,1,2,10,'30-01-2023','200');
select*from orders;
use CELLOU_DIALL;
--1 requête SQL pour récupérer les noms des clients qui ont passé une commande d'au moins un widget et d'au moins un gadget
-- ainsi que le coût total des widgets et gadget commandés par chaque client
--Le coût de chaque article doit être calculé en multipliant la quantité par le prix du produit.
select customer.customer_Name, SUM(quantity * product.Price) as 'coût total'
from customer
inner join product on customer.customer_id = product.product_id
inner join orders on product.product_id = orders.product_id
where product.product_name = 'widget' OR product.product_name = 'gadget'
group by customer.customer_Name;
use CELLOU_DIALL;
--requête pour récupérer les noms des clients qui ont passé une commande pour au moins un widget
--ainsi que le coût total des widgets commandés par chaque client.
SELECT customer.customer_Name, SUM(quantity * product.price) AS 'coût total'
from customer
INNER JOIN product on customer.customer_id = product.product_id
INNER JOIN orders on product.product_id = orders.product_id
where product.product_name = 'widget'
group by customer.customer_Name;
use CELLOU_DIALL;
-- requête pour récupérer les noms des clients qui ont commandé au moins un gadget,
-- ainsi que le coût total des gadget commandés par chaque client.
select customer.customer_Name, SUM(quantity * product.price) as 'coût total'
from customer
inner join product ON customer.customer_id = product.product_id
inner join orders ON product.product_id = orders.product_id
where product.product_name = 'gadget'
group by customer.customer_Name;
use CELLOU_DIALL;
--Écrivez une requête pour récupérer les noms des clients qui ont commandé au moins un dohickey
-- ainsi que le coût total des doohickey commandés par chaque client.
select customer_Name, sum(quantity*price) as'coût total'
from customer
inner join orders on customer.customer_id = orders.customer_id
inner join product on orders.product_id = product.product_id
where product.product_name = 'dohickey'
group by customer.customer_Name;
use CELLOU_DIALL;
-- requête pour récupérer le nombre total de widgets et de gadgets commandés par chaque client,
-- ainsi que le coût total des commandes.
select
cl.Customer_name,
sum(quantity) AS 'Nombre Total',
sum(quantity * p.price) AS 'coût total des commandes'
from Customer cl
join
Product p on cl.Customer_id = p.product_id
join
Orders o on p.Product_id = o.Product_id
where
p.Product_name IN ('widget', 'gadget')
group by
cl.Customer_name;
-- une requête pour récupérer les noms des clients qui ont commandé au moins un gadget,
-- ainsi que le coût total des gadget commandés par chaque client.
SELECT customer.customer_Name, SUM(quantity * product.price) AS 'coût total'
FROM customer
INNER JOIN product ON customer.customer_id = product.product_id
INNER JOIN orders ON product.product_id = orders.product_id
WHERE product.product_name = 'gadget'
GROUP BY customer.customer_Name;
-- une requête pour récupérer les noms des clients qui ont commandé au moins un dohickey,
-- ainsi que le coût total des doohickey commandés par chaque client.
SELECT customer.customer_Name, SUM(quantity * product.price) AS 'coût total'
FROM customer
INNER JOIN orders ON customer.customer_id = orders.customer_id
INNER JOIN product ON orders.product_id = product.product_id
WHERE product.product_name = 'dohickey'
GROUP BY customer.customer_Name;
--requête pour récupérer le nombre total de widgets et de gadgets commandés par chaque client,
-- ainsi que le coût total des commandes.
SELECT
cl.Customer_name,
SUM(CASE WHEN p.Product_name = 'widget' THEN o.quantity ELSE 0 END) AS 'Nombre Total de Widgets',
SUM(CASE WHEN p.Product_name = 'gadget' THEN o.quantity ELSE 0 END) AS 'Nombre Total de Gadgets',
SUM(o.quantity * p.price) AS 'Coût Total des Commandes'
FROM
Customer cl
JOIN
Product p ON cl.Customer_id = p.product_id
JOIN
Orders o ON p.Product_id = o.Product_id
WHERE
p.Product_name IN ('widget', 'gadget')
GROUP BY
cl.Customer_name;
-- Écrivez une requête pour récupérer les noms des produits qui ont été commandés par au moins un client
--ainsi que la quantité totale de chaque produit commandé.
SELECT
p.Product_name,
SUM(o.quantity) AS 'la quantité totale'
FROM
Product p
JOIN
Orders o ON p.Product_id = o.Product_id
GROUP BY
p.Product_name
HAVING
SUM(o.quantity) >= 1;
--Écrivez une requête pour récupérer les noms des clients qui ont passé le plus de commandes
--ainsi que le nombre total de commandes passées par chaque client.
SELECT
cl.Customer_name,
MAX(total_amount) AS 'le Montant total de commande'
FROM
Customer cl
JOIN
Orders o ON cl.Customer_id = o.Customer_id
GROUP BY
cl.Customer_id, cl.Customer_name;
-- requête pour récupérer les noms des produits les plus commandés,
--ainsi que la quantité totale de chaque produit commandé.
SELECT Product_name, sum(quantity) 'les noms des produits les plus commandés'
FROM Customer cl
JOIN Product p
ON cl.Customer_id = p.Product_id
JOIN Orders o
ON p.Product_id = o.Product_id
GROUP BY Product_name;
--Écrivez une requête pour récupérer les noms des clients qui ont passé une commande chaque jour de la semaine
--ainsi que le nombre total de commandes passées par chaque client.
SELECT Customer_name, sum(quantity) 'le nombre total de commandes passées par chaque client'
FROM Customer cl
JOIN Product p
ON cl.Customer_id = p.Product_id
JOIN Orders o
ON p.Product_id = o.Product_id
WHERE ordersDate LIKE '2023-02-%' OR OrdersDate LIKE '2023-05-%'
GROUP BY Customer_name;