Correction des tables Employe et Departement : ajout de contraintes de clé primaire et étrangère, mise à jour des types de données, et ajout de nouvelles requêtes SQL pour améliorer la structure et les fonctionnalités.

This commit is contained in:
2025-10-02 11:34:41 +02:00
parent c925c8a5c0
commit f4a5b5b708
2 changed files with 164 additions and 28 deletions

View File

@@ -2,16 +2,21 @@ DROP TABLE IF EXISTS Magasin;
DROP TABLE IF EXISTS Localite;
-- Q1.1
CREATE TABLE IF NOT EXISTS Magasin(
Id VARCHAR(3) PRIMARY KEY,
Enseigne VARCHAR(100) NOT NULL,
Ville VARCHAR(255) NOT NULL,
Chiffre INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS Localite(
Ville VARCHAR(255) NOT NULL,
Population INTEGER NOT NULL
Population INTEGER NOT NULL,
CONSTRAINT Localite_PK PRIMARY KEY (Ville)
);
CREATE TABLE IF NOT EXISTS Magasin(
Id VARCHAR(3),
Enseigne VARCHAR(100) NOT NULL,
Ville VARCHAR(255) NOT NULL,
Chiffre DECIMAL(10,2) NOT NULL,
CONSTRAINT Magasin_FK FOREIGN KEY (VILLE) REFERENCES Localite(Ville),
CONSTRAINT Magasin_PK PRIMARY KEY (Id)
);
INSERT INTO Localite (Ville, Population) VALUES
@@ -36,36 +41,47 @@ SELECT * FROM Magasin;
SELECT * FROM Localite;
-- Q1.2
SELECT 'Q1.2';
SELECT Ville, COUNT(*) AS NombreMagasins
FROM Magasin
GROUP BY Ville
ORDER BY Ville ASC;
-- Q1.3
SELECT 'Q1.3';
SELECT Ville, Enseigne, COUNT(*) as NombreMagasins
FROM Magasin
GROUP BY Ville, Enseigne
HAVING NombreMagasins >= 2;
-- Q1.4
SELECT Enseigne, Ville, AVG(Chiffre) AS ChiffreMoyen
SELECT 'Q1.4';
SELECT Enseigne, AVG(Chiffre) AS ChiffreMoyen
FROM Magasin
GROUP BY Enseigne, Ville;
GROUP BY Enseigne;
-- Q1.5
SELECT Enseigne, m.Ville, AVG(Chiffre) AS ChiffreMoyen
FROM Magasin m
JOIN Localite l ON m.Ville = l.Ville
WHERE l.Population >= 80000
GROUP BY Enseigne, m.Ville;
SELECT 'Q1.5';
SELECT Enseigne, AVG(Chiffre) AS ChiffreMoyen
FROM Magasin m, Localite l
WHERE m.Ville = l.Ville AND l.Population >= 80000
GROUP BY Enseigne;
-- Q1.6
SELECT Enseigne, Ville, SUM(Chiffre) as ChiffreAffaire
SELECT 'Q1.6';
SELECT Ville, SUM(Chiffre) as ChiffreAffaire
FROM Magasin
GROUP BY Ville, Enseigne;
GROUP BY Ville;
-- Q1.7
SELECT Enseigne, Ville, SUM(Chiffre) as ChiffreAffaire
SELECT 'Q1.7';
SELECT Ville, SUM(Chiffre) as ChiffreAffaire
FROM Magasin
GROUP BY Ville, Enseigne
HAVING ChiffreAffaire >= 1000000;
WHERE Chiffre > 1000000
GROUP BY Ville;