You are on page 1of 6

Baze te dhenash Arinela Anamali Dt 24/03/2020

LABORATOR 1

1. Krijoni nje view ku te afishohen Produkti dhe totali i zbritur i shitjeve te produkteve, per
kategorine Seafood dhe vitin 1998
create view Total_Product as (
SELECT ProductName,Total=round(SUM(OD.Quantity * (1-OD.Discount) *
OD.UnitPrice),2)
FROM [Order Details] OD, Orders O, Products P, Categories C
WHERE OD.OrderID = O.OrderID
AND OD.ProductID = P.ProductID
AND P.CategoryID = C.CategoryID
AND C.CategoryName = 'Seafood'
AND year(O.OrderDate) = '1998'
GROUP BY ProductName)

select * from Total_Product

2. Modifikoni view duke shtuar fushen productID


alter view Total_Product as (
SELECT p.ProductID, ProductName,Total=round(SUM(OD.Quantity * (1-OD.Discount) *
OD.UnitPrice),0)
FROM [Order Details] OD, Orders O, Products P, Categories C
WHERE OD.OrderID = O.OrderID
AND OD.ProductID = P.ProductID
AND P.CategoryID = C.CategoryID
AND C.CategoryName = 'Seafood'
AND year(O.OrderDate) = '1998'
GROUP BY ProductName,p.ProductID)

select * from Total_Product

3. Krijoni nje view ku te afishohen produkti dhe shuma e sasive qe ka bere porosi klienti me
ID ERNSH (te perdoret view e krijuar tek ushtrimi 1)
create view Customer_TotalProduct as (
SELECT C.CustomerID, p.productName,p.total
FROM Total_Product P,
[Order Details] OD,
Orders O,
Customers C
WHERE C.CustomerID = 'ERNSH'
AND C.CustomerID = O.CustomerID AND O.OrderID = OD.OrderID AND OD.ProductID =
P.ProductID)

select * from Customer_TotalProduct

4. Krijoni nje view ku te shfaqni te gjithe klientet dhe furnitoret perkatesisht fushat City,
CompanyName, ContactName, Tipi
create view Customers_Suppliers as (
SELECT City, CompanyName, ContactName, 'Customers' AS Tipi

1
Baze te dhenash Arinela Anamali Dt 24/03/2020

FROM Customers
UNION
SELECT City, CompanyName, ContactName, 'Suppliers' as Tipi
FROM Suppliers
)

select * from Customers_Suppliers

5. Krijoni nje view ku te gjeni mesataren e cmimeve te produkteve


create view AvgPrice as
(
Select avg(UnitPrice) as AVGPrice
from Products P )

select * from AvgPrice

6. Krijoni nje view ku te shfaqni listen e produkteve me cmimet, te cilet kane cmimet me te
medha se mesatarja e cmimive te produkteve (perdorni view me lart)
create view AvgPriceProd as SELECT ProductName, UnitPrice
FROM dbo.Products
WHERE (UnitPrice >
(select avgprice From AvgPrice))

7. Krijoni nje view ku te shfaqen klientet qe kane bere bere porosi gjate vitit 1998,
perkatesisht fushat CustomerID, CompanyName, City, Country
create view Custoners1998 as (SELECT DISTINCT Customers.CustomerID,
Customers.CompanyName, Customers.City, Customers.Country
FROM Customers INNER JOIN
Orders ON Customers.CustomerID = Orders.CustomerID
WHERE year(Orders.OrderDate) = '1998')

select * from Custoners1998

8. Krijoni nje view ku te afishoje 10 produktet me te shtrenjta.


create view TenProd as (SELECT top 10 p.ProductName AS TenMostExpensiveProducts,
p.UnitPrice
FROM Products p
ORDER BY p.UnitPrice DESC)
select * from TenProd

9. Modifikoni view duke shtuar kategorine e 10 produkteve me te shtrenjta


Alter view TenProd as (SELECT top 10 c.CategoryName, p.ProductName AS
TenMostExpensiveProducts, p.UnitPrice
FROM Products p, Categories c
where p.CategoryID = c.CategoryID
ORDER BY p.UnitPrice DESC)

select * from TenProd

2
Baze te dhenash Arinela Anamali Dt 24/03/2020

10. Krijoni nje view ku te afishoni Kategorine e produktit dhe numrin e porosive te bera nga
punonjesit qe jetojne ne USA
create view CategoryOrdersUSA as (
SELECT Categories.CategoryName, COUNT(Orders.OrderID) AS NR
FROM Orders INNER JOIN
[Order Details] ON Orders.OrderID = [Order Details].OrderID
INNER JOIN
Products ON [Order Details].ProductID = Products.ProductID
INNER JOIN
Categories ON Products.CategoryID = Categories.CategoryID
INNER JOIN
Employees ON Orders.EmployeeID = Employees.EmployeeID
WHERE (Employees.Country = N'USA')
GROUP BY Categories.CategoryName)

11. Krijoni nje view ku te afishoni listen e emrave te punonjesve qe kane bere porosi me
produktin me emer 'Chai '
create view EmployeeProduct as
(SELECT distinct Products.ProductName, Employees.FirstName + ' ' +
Employees.LastName as Emri
FROM Orders INNER JOIN
[Order Details] ON Orders.OrderID = [Order Details].OrderID
INNER JOIN
Products ON [Order Details].ProductID = Products.ProductID
INNER JOIN
Employees ON Orders.EmployeeID = Employees.EmployeeID
WHERE (Products.ProductName = N'CHAI'))

12. Krijoni nje view ku te afishoni produktet me 5 sasite me te medha qe jane porositur gjate
vitit 1998 nga furnitoret
create view TopFiveProducts as (
SELECT TOP 5 a.ProductID,
ProductName,
CompanyName AS Supplier,
SUM(quantity) AS quantity_ordered
FROM [order details] a INNER JOIN products b
ON a.productid = b.productid
INNER JOIN suppliers c ON c.supplierid = b.supplierid
INNER JOIN orders d ON d.orderid = a.orderid
AND DATEPART(YEAR, OrderDate)= 1998
GROUP BY a.productid, productname, CompanyName
order by SUM(quantity) desc)

13. Modifikoni view duke shtuar kriterin qe shuma e sasive te produkteve te jete me e madhe
se 450.
alter view TopFiveProducts as(
SELECT TOP 5 a.ProductID,
ProductName,

3
Baze te dhenash Arinela Anamali Dt 24/03/2020

CompanyName AS Supplier,
SUM(quantity) AS quantity_ordered
FROM [order details] a INNER JOIN products b
ON a.productid = b.productid
INNER JOIN suppliers c ON c.supplierid = b.supplierid
INNER JOIN orders d ON d.orderid = a.orderid
AND DATEPART(YEAR, OrderDate)= 1998
GROUP BY a.productid, productname, CompanyName
having SUM(quantity) >450
order by SUM(quantity) desc)

select * from TopFiveProducts

14. Krijoni nje view ku te afishoni emrat e punonjesve, vitet e punesimit per ata qe jane te
punesuar per me shume se 27 vite.
create view TopEmployee as
(select EmployeeID, FirstName, LastName, HireDate , DATEDIFF(year, HireDate ,
GETDATE()) as Years
from Employees where DATEDIFF(year, HireDate , GETDATE()) > 27)

select * from TopEmployee

15. Krijoni nje view ku te shfaqni te gjithe produktet, cmimin dhe rajonin e furnitorit te cilet
nuk kane furniture nga rajoni i USA.
create view SuppliersNotUSA as (SELECT productname, unitprice, suppliers.Region
from products inner join
suppliers on products.supplierID=suppliers.supplierID where suppliers.region
<>'USA')

select * from SuppliersNotUSA

16. Fshini disa nga view-et qe keni krijuar


drop view TenProd
drop view SuppliersNotUSA
drop view TopEmployee
drop view EmployeeProduct

17. Krijoni nje index clustered


CREATE TABLE parts(
part_id INT NOT NULL,
part_name VARCHAR(100)
);

INSERT INTO
parts(part_id, part_name)
VALUES
(1,'Frame'),
(2,'Head Tube'),

4
Baze te dhenash Arinela Anamali Dt 24/03/2020

(3,'Handlebar Grip'),
(4,'Shock Absorber'),
(5,'Fork');

SELECT part_id, part_name


FROM parts
WHERE part_id = 5;

CREATE CLUSTERED INDEX ix_parts_id


ON parts (part_id);

18. Krijoni nje index unclustered


CREATE TABLE Users (
users_id INT IDENTITY (1, 1) PRIMARY KEY,
first_name VARCHAR (255) NOT NULL,
last_name VARCHAR (255) NOT NULL,
phone VARCHAR (25),
email VARCHAR (255) NOT NULL,
street VARCHAR (255),
city VARCHAR (50),
state VARCHAR (25),
zip_code VARCHAR (5)
);

INSERT INTO
Users (first_name,last_name,email)
VALUES
('Andrea','Torres','student1@fshn.info'),
('Anita','Taras','student2@fshn.info'),
('John','Muko','student6@fshn.info'),
('Micky','Liro','student5@fshn.info'),
('Albert','Trini','student3@fshn.info')

select * from Users


SELECT
users_id,
first_name,
last_name
FROM
users
WHERE
last_name = 'Torres' AND
first_name = 'Andrea';

CREATE INDEX ix_usera_name


ON users(last_name , first_name);

19. Krijoni nje index unik


SELECT users_id,email
FROM users
WHERE email = 'student2@fshn.info';

5
Baze te dhenash Arinela Anamali Dt 24/03/2020

SELECT email, COUNT(email) as Nr


FROM users
GROUP BY email
HAVING COUNT(email) > 1;

CREATE UNIQUE INDEX ix_user_email


ON users(email);

20. Krijoni nje index te filtruar


update users
set phone = '(281) 363-3305'
where Users.users_id = 1;

update users
set phone = '(281) 363-3309'
where Users.users_id = 2;

update users
set phone = '(281) 363-3310'
where Users.users_id = 3;

update users
set phone = '(281) 363-3311'
where Users.users_id = 4;

CREATE INDEX ix_user_phone


ON users(phone)
WHERE phone IS NOT NULL;

SELECT first_name, last_name, phone


FROM users
WHERE phone = '(281) 363-3308';

21. Fshini disa nga index-et qe krijuat


Drop index users.ix_user_phone
Drop index users.ix_user_email

You might also like