You are on page 1of 10

Problem 1: Establish a database view called TotalBikesSoldView that lists

each bike name and associated total quantity sold. Then query the view to
show the top ten bikes sold. Present the output in descending order based on
total bikes sold
USE [BikeStores]
GO
CREATE VIEW TotalBikesSoldView
AS
SELECT [product_name],SUM(quantity) AS Quantity
FROM [BikeStores].[sales].[order_items]As O, [BikeStores].[production].[products] AS P
WHERE O.product_id=P.product_id
GROUP BY product_name

GO

--QUERY THE VIEW

SELECT TOP(10) product_name, Quantity


FROM TotalBikesSoldView
ORDER BY Quantity DESC
Problem 2: Establish a database view
called MaximumBrandBikePriceView that lists each bike brand and
associated maximum bike price. Then query the view and present the output
in ascending order based on the bike brand name.
USE BikeStores;
GO
CREATE VIEW MaximumBrandBikePriceView
AS
SELECT
[brand_name],
MAX(list_price) AS MaxPrice
FROM [production].[brands] AS B, [production].[products] AS P
WHERE P.brand_id = B.brand_id
GROUP BY brand_name
GO

--Query the View

SELECT * FROM MaximumBrandBikePriceView


Problem 3: Establish a database view
called AverageBrandBikePriceView that lists each bike brand name and
associated average bike list price and list price standard deviation. Then
query the view and present the output in ascending order based on the bike
brand name.
Use BikeStores;
GO
CREATE VIEW AverageBrandBikePriceView
AS
SELECT [brand_name],
AVG(list_price) AS AvgPrice,
STDEV(list_price) As StdDevPrice
FROM BikeStores.[production].[brands] AS B, BikeStores.[production].[products] AS P
WHERE P.brand_id = B.brand_id
GROUP BY [brand_name]
GO

--QUERY THE VIEW

Select * FROM AverageBrandBikePriceView


Problem 4: Establish a database view
called NumberOfCustomersPerStateView that lists the number of customers
in each state. The view needs to show the state name along with the
customer amount. Then query the view and present the output in ascending
order based on state.
USE BikeStores;
GO
CREATE VIEW NumberOfCustomersPerStateView
AS
SELECT DISTINCT [state],
COUNT(customer_id) AS NumCustomers
FROM [BikeStores].[sales].[customers]
GROUP BY [state]
GO

--QUERY THE VIEW

SELECT * FROM NumberOfCustomersPerStateView


Problem 5: Establish a database view
called TotalBikesSoldPerStateView that shows the cumulative bike sales
per state. The view needs to show the state name along with the bike sales
quantity. Then query the view and present the output in ascending order
based on state.
USE BikeStores;
GO
CREATE VIEW TotalBikesSoldPerStateView
AS
SELECT DISTINCT [state],
SUM(quantity) AS NumBikes
FROM [BikeStores].[sales].[customers] AS C, [sales].[orders] AS O, [sales].
[order_items] AS I
WHERE O.order_id=I.order_id AND C.customer_id=O.customer_id
GROUP BY [state]
GO

--QUERY THE VIEW

SELECT * FROM TotalBikesSoldPerStateView


ORDER BY [state]
Problem 6: Create a stored procedure that lists the stock quantity at each
store for a specified bike brand. The output must show the store name and
stock quantity value. The results need to be presented in ascending order
based on the store name. The skeleton of the stored procedure is provided
below.
USE BikeStores;
GO
CREATE PROCEDURE GetStoreBrandStockQuantity
@BrandName NVARCHAR(255)
AS
SET NOCOUNT ON;
SELECT [store_name],
SUM(quantity)
FROM [BikeStores].[production].[stocks]AS St,[BikeStores].[sales].[stores] AS S,
[production].[brands] AS B,[production].[products] AS P
WHERE St.product_id=P.product_id AND B.brand_id=P.brand_id AND St.store_id =
S.store_id AND B.brand_name = @BrandName
GROUP BY [store_name]
ORDER BY [store_name]
GO

--EXECUTE THE PROCEDURE

EXECUTE GetStoreBrandStockQuantity 'Trek';


Problem 7: Create a stored procedure that lists the average, standard
deviation, maximum, and minimum list prices for a specified bike brand. The
output must show the brand name along with the aggregated results..
USE BikeStores;
GO
CREATE PROCEDURE GetBrandListPriceStatistics
@BrandName NVARCHAR(255)
AS
SET NOCOUNT ON;
SELECT
[brand_name],
AVG(list_price) AS AvgPrice,
STDEV(list_price) As StdDevPrice,
MAX(list_price) AS PriceMax,
MIN(list_price) AS PriceMin
FROM [production].[brands] AS B, [production].[products] AS P
WHERE P.brand_id = B.brand_id AND brand_name=@BrandName
GROUP BY brand_name
GO
--EXECUTE PROCEDURE
EXEC GetBrandListPriceStatistics @BrandName='Trek';
Problem 8: Create a stored procedure that lists the bike categories with
minimum list prices below a specified value. The output must show the bike
category and associated minimum list price. The results need to be presented
in ascending order based on the bike category. The skeleton of the stored
procedure is provided below. (Hint: The HAVING clause needs to be used.)
USE BikeStores;
GO
CREATE PROCEDURE GetBikeCategoriesWithMinPriceBelowValue
@Price NVARCHAR(255)
AS
SET NOCOUNT ON;
SELECT [category_name],
MIN([list_price]) AS Mp
FROM [BikeStores].[production].[categories] AS c,[BikeStores].[production].[products] AS
p
WHERE c.category_id=p.category_id
GROUP BY category_name HAVING MIN([list_price]) <= @Price

GO
--EXECUTE THE PROCEDURE
EXEC GetBikeCategoriesWithMinPriceBelowValue @Price=500;
Problem 9: Create a stored procedure that lists the stock quantity for each
bike category at a specified store. The output must show the bike category
and stock quantity value. The results need to be presented in ascending order
based on the bike category. The skeleton of the stored procedure is provided
below.
USE BikeStores;
GO
CREATE PROCEDURE GetCategoryStockQuantityForStore
@StoreName VARCHAR(255)
AS
SET NOCOUNT ON;
SELECT [category_name],
SUM([quantity]) AS NumBikes
FROM [BikeStores].[production].[categories] AS C,[BikeStores].[production].[stocks] AS
S,[BikeStores].[production].[products] AS P,[sales].[stores] AS St
WHERE S.product_id = P.product_id AND C.category_id=P.category_id AND St.store_id =
S.store_id AND store_name = @StoreName
GROUP BY category_name
GO

--Execute the Procedure


Problem 10: Create a stored procedure that presents the sales discount
average and standard deviation for bike brands at or above a specified
discount value. The output must show the brand names in alphabetical order
along with the associated statistics. The skeleton of the stored procedure is
provided below. (Hint: The HAVING clause needs to be used.)
USE BikeStores;
GO
CREATE PROCEDURE GetBrandAverageSalesDiscountAboveValue
@Discount DECIMAL(4,2)
AS
SET NOCOUNT ON;
SELECT [brand_name],
AVG([discount]) AS DiscAvg,
STDEV([discount]) AS DiscStdev
FROM [BikeStores].[production].[brands]AS B,[BikeStores].[production].[products] AS P,
[BikeStores].[sales].[order_items] AS O
WHERE B.brand_id=P.brand_id AND P.product_id = O.product_id
GROUP BY brand_name HAVING AVG([discount]) >= @Discount
ORDER BY brand_name
GO

--EXECUTE THE PROCEDURE

You might also like