Baza SQL "sklep" - Struktura i dane

Tabela: produkty

CREATE TABLE produkty ( id_produktu INT PRIMARY KEY, nazwa VARCHAR(50), cena DECIMAL(10,2) ); INSERT INTO produkty (id_produktu, nazwa, cena) VALUES (1, 'Mysz', 50.00), (2, 'Klawiatura', 120.00), (3, 'Monitor', 800.00), (4, 'Pendrive', 40.00), (5, 'Słuchawki', 200.00);

Tabela: klienci

CREATE TABLE klienci ( id_klienta INT PRIMARY KEY, imie VARCHAR(30), nazwisko VARCHAR(30) ); INSERT INTO klienci (id_klienta, imie, nazwisko) VALUES (1, 'Jan', 'Kowalski'), (2, 'Anna', 'Nowak'), (3, 'Piotr', 'Wiśniewski');

Tabela: zamowienia

CREATE TABLE zamowienia ( id_zamowienia INT PRIMARY KEY, id_klienta INT, data_zamowienia DATE, FOREIGN KEY (id_klienta) REFERENCES klienci(id_klienta) ); INSERT INTO zamowienia (id_zamowienia, id_klienta, data_zamowienia) VALUES (1, 1, '2025-09-01'), (2, 2, '2025-09-05'), (3, 1, '2025-09-10');

Tabela: zamowienia_produkty

CREATE TABLE zamowienia_produkty ( id_zamowienia INT, id_produktu INT, ilosc INT, PRIMARY KEY(id_zamowienia, id_produktu), FOREIGN KEY (id_zamowienia) REFERENCES zamowienia(id_zamowienia), FOREIGN KEY (id_produktu) REFERENCES produkty(id_produktu) ); INSERT INTO zamowienia_produkty (id_zamowienia, id_produktu, ilosc) VALUES (1, 1, 2), (1, 4, 1), (2, 2, 1), (2, 5, 2), (3, 3, 1), (3, 5, 1);

Ćwiczenia do bazy "sklep"

Ćwiczenie 1: Lista wszystkich produktów

SELECT * FROM produkty;

Ćwiczenie 2: Klienci zamawiający więcej niż jeden produkt

SELECT k.imie, k.nazwisko, COUNT(zp.id_produktu) AS liczba_produktow FROM klienci k JOIN zamowienia z ON k.id_klienta = z.id_klienta JOIN zamowienia_produkty zp ON z.id_zamowienia = zp.id_zamowienia GROUP BY k.id_klienta HAVING liczba_produktow > 1;

Ćwiczenie 3: Łączna wartość zamówienia nr 1

SELECT SUM(p.cena * zp.ilosc) AS wartosc_zamowienia FROM zamowienia_produkty zp JOIN produkty p ON zp.id_produktu = p.id_produktu WHERE zp.id_zamowienia = 1;

Ćwiczenie 4: Produkty kupowane przez Jana Kowalskiego

SELECT p.nazwa, zp.ilosc FROM klienci k JOIN zamowienia z ON k.id_klienta = z.id_klienta JOIN zamowienia_produkty zp ON z.id_zamowienia = zp.id_zamowienia JOIN produkty p ON zp.id_produktu = p.id_produktu WHERE k.imie = 'Jan' AND k.nazwisko = 'Kowalski';

Ćwiczenie 5: Najdroższy produkt w zamówieniach

SELECT p.nazwa, p.cena FROM produkty p JOIN zamowienia_produkty zp ON p.id_produktu = zp.id_produktu ORDER BY p.cena DESC LIMIT 1;

Ćwiczenie 6: Średnia cena wszystkich zamówień

SELECT AVG(p.cena * zp.ilosc) AS srednia_wartosc FROM zamowienia_produkty zp JOIN produkty p ON zp.id_produktu = p.id_produktu;