----------------------------------------------------------------------------------- -- prebacivanje na bazu AdventureWorksOBP USE AdventureWorksOBP GO ----------------------------------------------------------------------------------- -- Vježbe 1. -- Vježba 1.1. -- Napravite pogled koji će dohvaćati sve iz tablice Kupac CREATE VIEW p1 AS SELECT * FROM Kupac GO -- Vježba 1.1.a) -- Iskoristite pogled za dohvaćanje svih zapisa SELECT * FROM p1 GO -- Vježba 1.1.b) -- Iskoristite pogled za dohvaćanje onih osoba čije ime započinje sa “L” i prezime završava na “a” SELECT * FROM p1 WHERE Ime LIKE 'L%' AND Prezime LIKE '%a' GO -- Vježba 1.1.c) -- Iskoristite pogled za ispis svih ID-eva gradova i broja osoba koje žive u tom gradu, -- padajuće prema broju osoba -- (pomoću grupiranja i pomoću podupita) -- pomoću grupiranja SELECT GradID, COUNT(*) AS BrojOsoba FROM p1 GROUP BY GradID ORDER BY BrojOsoba DESC GO -- pomoću podupita SELECT DISTINCT GradID, (SELECT COUNT(*) FROM p1 AS sq WHERE ISNULL(sq.GradID, '') = ISNULL(mq.GradID, '')) AS BrojOsoba FROM p1 AS mq ORDER BY BrojOsoba DESC GO -- Vježba 1.1.d) -- Iskoristite pogled tako da ispišete ime i prezime te pokraj svakoga -- ispišite njegov naziv grada i naziv države SELECT p1.Ime, p1.Prezime, g.Naziv as 'Grad', d.Naziv as 'Država' FROM p1 LEFT JOIN Grad AS g ON p1.GradID = g.IDGrad LEFT JOIN Drzava AS d ON g.DrzavaID= d.IDDrzava GO -- Vježba 1.2) -- Promijenite pogled tako da ne uključuje stupce Email, Telefon i GradID ALTER VIEW p1 AS SELECT IDKupac, Ime, Prezime FROM Kupac GO -- provjera SELECT * FROM p1 GO -- Vježba 1.2) -- Uklonite pogled DROP VIEW p1 GO ----------------------------------------------------------------------------------- -- Vježbe 2. -- Vježba 2.1) -- Pripremite sljedeće izvještaje u obliku pogleda: -- Vježba 2.1.a) -- Ispišite nazive svih kupaca, te za svakoga ispišite email, grad i naziv države u kojoj je smješten -- Tablice: Kupac, Grad, Drzava CREATE VIEW p2 AS SELECT k.Ime, k.Prezime, k.Email, g.Naziv AS Grad, d.Naziv AS Drzava FROM Kupac AS k LEFT JOIN Grad AS g ON k.GradID = g.IDGrad LEFT JOIN Drzava AS d ON g.DrzavaID = d.IDDrzava GO -- provjera SELECT * FROM p2 GO -- Vježba 2.1.b) -- Ispišite sve države i za svaku od njih ispišite koliko kupaca iz nje postoji -- Tablice: Kupac, Grad, Drzava CREATE VIEW p3 AS SELECT d.Naziv AS Drzava, COUNT(k.IDKupac) AS BrojKupaca FROM Kupac AS k LEFT JOIN Grad AS g ON k.GradID = g.IDGrad LEFT JOIN Drzava AS d ON g.DrzavaID = d.IDDrzava GROUP BY d.Naziv GO -- provjera SELECT * FROM p3 GO -- Vježba 2.1.c) -- Ispišite nazive svih proizvoda koje je kupilo >300 kupaca -- Tablice: Kupac, Racun, Stavka i Proizvod CREATE VIEW p4 AS SELECT p.Naziv, COUNT(k.IDKupac) AS BrojKupaca FROM Proizvod AS p INNER JOIN Stavka AS s ON s.ProizvodID = p.IDProizvod INNER JOIN Racun AS r ON s.RacunID = r.IDRacun INNER JOIN Kupac AS k ON r.KupacID = k.IDKupac GROUP BY p.Naziv HAVING COUNT(k.IDKupac) > 300 GO -- provjera SELECT * FROM p4 GO -- Vježba 2.1.d) -- Ispišite nazive i zaradu 5 proizvoda koji se najbolje prodaju -- Tablice: Stavka i Proizvod CREATE VIEW p5 AS SELECT TOP 5 p.Naziv, SUM(s.UkupnaCijena) AS Zarada FROM Proizvod AS p INNER JOIN Stavka AS s ON s.ProizvodID = p.IDProizvod GROUP BY p.Naziv ORDER BY Zarada DESC GO -- provjera SELECT * FROM p5 GO -- Vježba 2.1.e) -- Uklonite sve poglede DROP VIEW p2 DROP VIEW p3 DROP VIEW p4 DROP VIEW p5 GO ----------------------------------------------------------------------------------- -- Vježbe 3. -- Vježba 3.1) -- Napravite pogled koji vraća imena i prezimena te e-mailove svih kupaca iz Zagreba. CREATE VIEW p6 AS SELECT k.Ime, k.Prezime, k.Email, g.Naziv AS Grad FROM Kupac AS k INNER JOIN Grad AS g ON k.GradID = g.IDGrad WHERE g.Naziv = 'Zagreb' GO -- provjera SELECT * FROM p6 GO -- Vježba 3.2) -- Promijenite pogled tako da dohvaća i sve kupce iz Splita. ALTER VIEW p6 AS SELECT k.Ime, k.Prezime, k.Email, g.Naziv AS Grad FROM Kupac AS k INNER JOIN Grad AS g ON k.GradID = g.IDGrad WHERE g.Naziv = 'Zagreb' OR g.Naziv = 'Split' GO -- provjera SELECT * FROM p6 GO -- Vježba 3.3) -- Koristeći pogled ispišite broj kupaca iz Zagreba i broj kupaca iz Splita. SELECT Grad, COUNT(*) AS Broj FROM p6 GROUP BY Grad GO -- Vježba 3.4) -- Uklonite pogled. DROP VIEW p6 GO