First commit, 已上架的電子書
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,311 @@
|
||||
/****** Object: View Orders Qry Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Orders_Qry
|
||||
AS
|
||||
SELECT Orders.OrderID, Orders.CustomerID, Orders.EmployeeID, Orders.OrderDate, Orders.RequiredDate,
|
||||
Orders.ShippedDate, Orders.shipperid, Orders.Freight, Orders.ShipName, Orders.ShipAddress, Orders.ShipCity,
|
||||
Orders.ShipRegion, Orders.ShipPostalCode, Orders.ShipCountry,
|
||||
Customers.CompanyName, Customers.Address, Customers.City, Customers.Region, Customers.PostalCode, Customers.Country
|
||||
FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
|
||||
|
||||
|
||||
/****** Object: View Quarterly Orders Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Quarterly_Orders
|
||||
AS
|
||||
SELECT DISTINCT Customers.CustomerID, Customers.CompanyName, Customers.City, Customers.Country
|
||||
FROM Customers RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
|
||||
WHERE Orders.OrderDate BETWEEN '19970101' And '19971231'
|
||||
|
||||
|
||||
/****** Object: View Invoices Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Invoices
|
||||
AS
|
||||
SELECT Orders.ShipName, Orders.ShipAddress, Orders.ShipCity, Orders.ShipRegion, Orders.ShipPostalCode,
|
||||
Orders.ShipCountry, Orders.CustomerID, Customers.CompanyName AS CustomerName, Customers.Address, Customers.City,
|
||||
Customers.Region, Customers.PostalCode, Customers.Country,
|
||||
(FirstName + ' ' + LastName) AS Salesperson,
|
||||
Orders.OrderID, Orders.OrderDate, Orders.RequiredDate, Orders.ShippedDate, Shippers.CompanyName As ShipperName,
|
||||
Order_Details.ProductID, Products.ProductName, Order_Details.UnitPrice, Order_Details.Quantity,
|
||||
Order_Details.Discount,
|
||||
(((Order_Details.UnitPrice*Quantity*(1-Discount)/100))*100) AS ExtendedPrice, Orders.Freight
|
||||
FROM Shippers INNER JOIN
|
||||
(Products INNER JOIN
|
||||
(
|
||||
(Employees INNER JOIN
|
||||
(Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID)
|
||||
ON Employees.EmployeeID = Orders.EmployeeID)
|
||||
INNER JOIN Order_Details ON Orders.OrderID = Order_Details.OrderID)
|
||||
ON Products.ProductID = Order_Details.ProductID)
|
||||
ON Shippers.ShipperID = Orders.shipperid
|
||||
|
||||
|
||||
/****** Object: View Product Sales for 1997 Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Product_Sales_for_1997
|
||||
AS
|
||||
SELECT Categories.CategoryName, Products.ProductName,
|
||||
Sum(((Order_Details.UnitPrice*Quantity*(1-Discount)/100))*100) AS ProductSales
|
||||
FROM (Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID)
|
||||
INNER JOIN (Orders
|
||||
INNER JOIN Order_Details ON Orders.OrderID = Order_Details.OrderID)
|
||||
ON Products.ProductID = Order_Details.ProductID
|
||||
WHERE (((Orders.ShippedDate) Between '19970101' And '19971231'))
|
||||
GROUP BY Categories.CategoryName, Products.ProductName
|
||||
|
||||
/****** Object: View Current Product List Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Current_Product_List
|
||||
AS
|
||||
SELECT Product_List.ProductID, Product_List.ProductName
|
||||
FROM Products AS Product_List
|
||||
WHERE (((Product_List.Discontinued)=0))
|
||||
|
||||
|
||||
/****** Object: View Order_Details Extended Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Order_Details_Extended
|
||||
AS
|
||||
SELECT OD.OrderID, OD.ProductID, Products.ProductName,
|
||||
OD.UnitPrice, OD.Quantity, OD.Discount,
|
||||
(((OD.UnitPrice*Quantity*(1-Discount)/100))*100) AS ExtendedPrice
|
||||
FROM Products INNER JOIN Order_Details OD ON Products.ProductID = OD.ProductID
|
||||
|
||||
|
||||
/****** Object: View Products Above Average Price Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Products_Above_Average_Price AS
|
||||
SELECT Products.ProductName, Products.UnitPrice
|
||||
FROM Products
|
||||
WHERE Products.UnitPrice>(SELECT AVG(UnitPrice) From Products)
|
||||
-- ORDER BY Products.UnitPrice DESC
|
||||
|
||||
|
||||
/****** Object: View Products by Category Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Products_by_Category AS
|
||||
SELECT Categories.CategoryName, Products.ProductName, Products.QuantityPerUnit, Products.UnitsInStock, Products.Discontinued
|
||||
FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID
|
||||
WHERE Products.Discontinued <> 1
|
||||
-- ORDER BY Categories.CategoryName, Products.ProductName
|
||||
|
||||
|
||||
/****** Object: View Alphabetical list of products Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Alphabetical_list_of_products AS
|
||||
SELECT Products.*, Categories.CategoryName
|
||||
FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID
|
||||
WHERE (((Products.Discontinued)=0))
|
||||
|
||||
|
||||
/****** Object: View Order Subtotals Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Order_Subtotals AS
|
||||
SELECT OD.OrderID, Sum(((OD.UnitPrice*Quantity*(1-Discount)/100))*100) AS Subtotal
|
||||
FROM Order_Details OD
|
||||
GROUP BY OD.OrderID
|
||||
|
||||
|
||||
/****** Object: View Customer and Suppliers by City Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Customer_and_Suppliers_by_City
|
||||
AS
|
||||
SELECT City, CompanyName, ContactName, 'Customers' AS Relationship
|
||||
FROM Customers
|
||||
UNION SELECT City, CompanyName, ContactName, 'Suppliers'
|
||||
FROM Suppliers
|
||||
-- ORDER BY City, CompanyName
|
||||
|
||||
|
||||
/****** Object: View Sales Totals by Amount Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Sales_Totals_by_Amount
|
||||
AS
|
||||
SELECT
|
||||
Order_Subtotals.Subtotal AS SaleAmount, Orders.OrderID, Customers.CompanyName, Orders.ShippedDate
|
||||
FROM Customers INNER JOIN
|
||||
(Orders INNER JOIN Order_Subtotals ON Orders.OrderID = Order_Subtotals.OrderID)
|
||||
ON Customers.CustomerID = Orders.CustomerID
|
||||
WHERE (Order_Subtotals.Subtotal >2500) AND (Orders.ShippedDate BETWEEN '19970101' And '19971231')
|
||||
|
||||
|
||||
/****** Object: View Summary of Sales by Quarter Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Summary_of_Sales_by_Quarter
|
||||
AS
|
||||
SELECT Orders.ShippedDate, Orders.OrderID, Order_Subtotals.Subtotal
|
||||
FROM Orders INNER JOIN Order_Subtotals ON Orders.OrderID = Order_Subtotals.OrderID
|
||||
WHERE Orders.ShippedDate IS NOT NULL
|
||||
-- ORDER BY Orders.ShippedDate
|
||||
|
||||
|
||||
/****** Object: View Summary of Sales by Year Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Summary_of_Sales_by_Year
|
||||
AS
|
||||
SELECT Orders.ShippedDate, Orders.OrderID, Order_Subtotals.Subtotal
|
||||
FROM Orders INNER JOIN Order_Subtotals ON Orders.OrderID = Order_Subtotals.OrderID
|
||||
WHERE Orders.ShippedDate IS NOT NULL
|
||||
-- RDER BY Orders.ShippedDate
|
||||
|
||||
|
||||
/****** Object: View Sales by Category Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Sales_by_Category
|
||||
AS
|
||||
SELECT Categories.CategoryID, Categories.CategoryName, Products.ProductName,
|
||||
Sum(ODE.ExtendedPrice) AS ProductSales
|
||||
FROM Categories INNER JOIN
|
||||
(Products INNER JOIN
|
||||
(Orders INNER JOIN Order_Details_Extended ODE ON Orders.OrderID = ODE.OrderID)
|
||||
ON Products.ProductID = ODE.ProductID)
|
||||
ON Categories.CategoryID = Products.CategoryID
|
||||
WHERE Orders.OrderDate BETWEEN '19970101' And '19971231'
|
||||
GROUP BY Categories.CategoryID, Categories.CategoryName, Products.ProductName
|
||||
-- ORDER BY Products.ProductName
|
||||
|
||||
|
||||
/****** Object: View Category Sales for 1997 Script Date: 08/12/2011 11:46:04 ******/
|
||||
create view Category_Sales_for_1997
|
||||
AS
|
||||
SELECT v1997.CategoryName, Sum(v1997.ProductSales) AS CategorySales
|
||||
FROM Product_Sales_for_1997 v1997
|
||||
GROUP BY v1997.CategoryName
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/****** OK Object: OK StoredProcedure SalesByCategory Script Date: 08/12/2011 11:46:02 ******/
|
||||
DELIMITER //
|
||||
CREATE or replace PROCEDURE SalesByCategory
|
||||
(
|
||||
_CategoryName varchar(20),
|
||||
_OrdYear int
|
||||
)
|
||||
/*
|
||||
call SalesByCategory('Beverages',2007);
|
||||
*/
|
||||
begin
|
||||
if (_OrdYear != 2006 AND _OrdYear != 2007 AND _OrdYear != 2008) then
|
||||
set _OrdYear = 2006;
|
||||
end if;
|
||||
|
||||
SELECT ProductName,
|
||||
ROUND(SUM(OD.Quantity * (1-OD.Discount) * OD.UnitPrice), 0) TotalPurchase
|
||||
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 = _CategoryName
|
||||
AND DATE_FORMAT(O.OrderDate, '%Y') = _OrdYear
|
||||
GROUP BY ProductName
|
||||
ORDER BY ProductName;
|
||||
end;
|
||||
//
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
/****** OK Object: StoredProcedure CustOrdersOrders Script Date: 08/12/2011 11:46:02 ******/
|
||||
DELIMITER //
|
||||
CREATE or replace PROCEDURE CustOrdersOrders
|
||||
(
|
||||
_CustomerID int
|
||||
)
|
||||
/*
|
||||
call CustOrdersOrders(1);
|
||||
*/
|
||||
begin
|
||||
SELECT OrderID,
|
||||
OrderDate,
|
||||
RequiredDate,
|
||||
ShippedDate
|
||||
FROM Orders
|
||||
WHERE CustomerID = _CustomerID
|
||||
ORDER BY OrderID;
|
||||
end;
|
||||
//
|
||||
DELIMITER ;
|
||||
|
||||
/****** Object: StoredProcedure CustOrderHist Script Date: 08/12/2011 11:46:01 ******/
|
||||
DELIMITER //
|
||||
CREATE or replace PROCEDURE CustOrderHist
|
||||
(
|
||||
_CustomerID int
|
||||
)
|
||||
/*
|
||||
call CustOrderHist(1);
|
||||
*/
|
||||
begin
|
||||
SELECT ProductName, SUM(Quantity) Total
|
||||
FROM Products P, Order_Details OD, Orders O, Customers C
|
||||
WHERE C.CustomerID = _CustomerID
|
||||
AND C.CustomerID = O.CustomerID AND O.OrderID = OD.OrderID AND OD.ProductID = P.ProductID
|
||||
GROUP BY ProductName;
|
||||
end;
|
||||
//
|
||||
DELIMITER ;
|
||||
|
||||
/****** OK Object: StoredProcedure CustOrdersDetail Script Date: 08/12/2011 11:46:01 ******/
|
||||
DELIMITER //
|
||||
CREATE or replace PROCEDURE CustOrdersDetail
|
||||
(
|
||||
_OrderID int
|
||||
)
|
||||
/*
|
||||
call CustOrdersDetail(10666);
|
||||
*/
|
||||
begin
|
||||
SELECT ProductName,
|
||||
ROUND(Od.UnitPrice, 2) UnitPrice,
|
||||
Quantity,
|
||||
(Discount * 100) Discount,
|
||||
ROUND((Quantity * (1 - Discount) * Od.UnitPrice), 2) ExtendedPrice
|
||||
FROM Products P, Order_Details Od
|
||||
WHERE Od.ProductID = P.ProductID and Od.OrderID = _OrderID;
|
||||
end;
|
||||
//
|
||||
DELIMITER ;
|
||||
|
||||
/****** OK Object: StoredProcedure Ten Most Expensive Products Script Date: 08/12/2011 11:46:02 ******/
|
||||
DELIMITER //
|
||||
create or replace procedure Ten_Most_Expensive_Products ()
|
||||
/*
|
||||
call Ten_Most_Expensive_Products();
|
||||
*/
|
||||
begin
|
||||
SELECT Products.ProductName AS TenMostExpensiveProducts, Products.UnitPrice
|
||||
FROM Products
|
||||
ORDER BY Products.UnitPrice DESC
|
||||
limit 10;
|
||||
end
|
||||
//
|
||||
DELIMITER ;
|
||||
|
||||
/****** OK Object: StoredProcedure Sales by Year Script Date: 08/12/2011 11:46:02 ******/
|
||||
DELIMITER //
|
||||
create or replace procedure Sales_by_Year
|
||||
(
|
||||
_Beginning_Date Date,
|
||||
_Ending_Date Date
|
||||
)
|
||||
/*
|
||||
call Sales_by_Year('2006-01-01','2006-12-31');
|
||||
*/
|
||||
begin
|
||||
SELECT Orders.ShippedDate, Orders.OrderID, Order_Subtotals.Subtotal, year(ShippedDate) AS Year
|
||||
FROM Orders INNER JOIN Order_Subtotals ON Orders.OrderID = Order_Subtotals.OrderID
|
||||
WHERE Orders.ShippedDate Between _Beginning_Date And _Ending_Date;
|
||||
end;
|
||||
//
|
||||
DELIMITER ;
|
||||
|
||||
/****** OK Object: StoredProcedure Employee Sales by Country Script Date: 08/12/2011 11:46:02 ******/
|
||||
DELIMITER //
|
||||
create or replace procedure Employee_Sales_by_Country
|
||||
(
|
||||
_Beginning_Date Date,
|
||||
_Ending_Date Date
|
||||
)
|
||||
/*
|
||||
call Employee_Sales_by_Country('2006-01-01','2006-12-31');
|
||||
*/
|
||||
begin
|
||||
SELECT Employees.Country, Employees.LastName, Employees.FirstName, Orders.ShippedDate, Orders.OrderID, Order_Subtotals.Subtotal AS SaleAmount
|
||||
FROM Employees INNER JOIN
|
||||
(Orders INNER JOIN Order_Subtotals ON Orders.OrderID = Order_Subtotals.OrderID)
|
||||
ON Employees.EmployeeID = Orders.EmployeeID
|
||||
WHERE Orders.ShippedDate Between _Beginning_Date And _Ending_Date;
|
||||
end;
|
||||
//
|
||||
DELIMITER ;
|
||||
@@ -0,0 +1,384 @@
|
||||
/*
|
||||
https://www.postgresqltutorial.com/postgresql-create-procedure/
|
||||
從 ms-sql 的 view 改寫為 postgresql, 問題不大, 排除 table 和 fields 的些微差異,
|
||||
主要的問題是
|
||||
1.字串相加的語法 + -> ||
|
||||
2.convert 轉為 momey 取消
|
||||
3.JOIN 的語法和我慣用法不同
|
||||
*/
|
||||
|
||||
/****** Object: View Orders Qry Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view orders_qry
|
||||
as
|
||||
select orders.orderid, orders.customerid, orders.employeeid, orders.orderdate, orders.requireddate,
|
||||
orders.shippeddate, orders.shipperid, orders.freight, orders.shipname, orders.shipaddress, orders.shipcity,
|
||||
orders.shipregion, orders.shippostalcode, orders.shipcountry,
|
||||
customers.companyname, customers.address, customers.city, customers.region, customers.postalcode, customers.country
|
||||
from customers inner join orders on customers.customerid = orders.customerid
|
||||
|
||||
|
||||
/****** Object: View Quarterly Orders Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Quarterly_Orders
|
||||
AS
|
||||
SELECT DISTINCT Customers.CustomerID, Customers.CompanyName, Customers.City, Customers.Country
|
||||
FROM Customers RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
|
||||
WHERE Orders.OrderDate BETWEEN '19970101' And '19971231'
|
||||
|
||||
|
||||
/****** Object: View Invoices Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Invoices
|
||||
AS
|
||||
SELECT Orders.ShipName, Orders.ShipAddress, Orders.ShipCity, Orders.ShipRegion, Orders.ShipPostalCode,
|
||||
Orders.ShipCountry, Orders.CustomerID, Customers.CompanyName AS CustomerName, Customers.Address, Customers.City,
|
||||
Customers.Region, Customers.PostalCode, Customers.Country,
|
||||
(FirstName || ' ' || LastName) AS Salesperson,
|
||||
Orders.OrderID, Orders.OrderDate, Orders.RequiredDate, Orders.ShippedDate, Shippers.CompanyName As ShipperName,
|
||||
OD.ProductID, Products.ProductName, OD.UnitPrice, OD.Quantity,
|
||||
OD.Discount,
|
||||
(((OD.UnitPrice*Quantity*(1-Discount)/100))*100) AS ExtendedPrice, Orders.Freight
|
||||
FROM Shippers INNER JOIN
|
||||
(Products INNER JOIN
|
||||
(
|
||||
(Employees INNER JOIN
|
||||
(Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID)
|
||||
ON Employees.EmployeeID = Orders.EmployeeID)
|
||||
INNER JOIN Order_Details OD ON Orders.OrderID = OD.OrderID)
|
||||
ON Products.ProductID = OD.ProductID)
|
||||
ON Shippers.ShipperID = Orders.shipperid
|
||||
|
||||
|
||||
/****** Object: View Product Sales for 1997 Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Product_Sales_for_1997
|
||||
AS
|
||||
SELECT Categories.CategoryName, Products.ProductName,
|
||||
Sum(((OD.UnitPrice*Quantity*(1-Discount)/100))*100) AS ProductSales
|
||||
FROM (Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID)
|
||||
INNER JOIN (Orders
|
||||
INNER JOIN Order_Details OD ON Orders.OrderID = OD.OrderID)
|
||||
ON Products.ProductID = OD.ProductID
|
||||
WHERE (((Orders.ShippedDate) Between '19970101' And '19971231'))
|
||||
GROUP BY Categories.CategoryName, Products.ProductName
|
||||
|
||||
/****** Object: View Current Product List Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Current_Product_List
|
||||
AS
|
||||
SELECT Product_List.ProductID, Product_List.ProductName
|
||||
FROM Products AS Product_List
|
||||
WHERE (((Product_List.Discontinued)=0))
|
||||
|
||||
|
||||
/****** Object: View Order_Details Extended Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Order_Details_Extended
|
||||
AS
|
||||
SELECT OD.OrderID, OD.ProductID, Products.ProductName,
|
||||
OD.UnitPrice, OD.Quantity, OD.Discount,
|
||||
(((OD.UnitPrice*Quantity*(1-Discount)/100))*100) AS ExtendedPrice
|
||||
FROM Products INNER JOIN Order_Details OD ON Products.ProductID = OD.ProductID
|
||||
|
||||
|
||||
/****** Object: View Products Above Average Price Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Products_Above_Average_Price AS
|
||||
SELECT Products.ProductName, Products.UnitPrice
|
||||
FROM Products
|
||||
WHERE Products.UnitPrice>(SELECT AVG(UnitPrice) From Products)
|
||||
--ORDER BY Products.UnitPrice DESC
|
||||
|
||||
|
||||
/****** Object: View Products by Category Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Products_by_Category AS
|
||||
SELECT Categories.CategoryName, Products.ProductName, Products.QuantityPerUnit, Products.UnitsInStock, Products.Discontinued
|
||||
FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID
|
||||
WHERE Products.Discontinued <> 1
|
||||
--ORDER BY Categories.CategoryName, Products.ProductName
|
||||
|
||||
|
||||
/****** Object: View Alphabetical list of products Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Alphabetical_list_of_products AS
|
||||
SELECT Products.*, Categories.CategoryName
|
||||
FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID
|
||||
WHERE (((Products.Discontinued)=0))
|
||||
|
||||
|
||||
/****** Object: View Order Subtotals Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Order_Subtotals AS
|
||||
SELECT OD.OrderID, Sum(((OD.UnitPrice*Quantity*(1-Discount)/100))*100) AS Subtotal
|
||||
FROM Order_Details OD
|
||||
GROUP BY OD.OrderID
|
||||
|
||||
|
||||
/****** Object: View Customer and Suppliers by City Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Customer_and_Suppliers_by_City
|
||||
AS
|
||||
SELECT City, CompanyName, ContactName, 'Customers' AS Relationship
|
||||
FROM Customers
|
||||
UNION SELECT City, CompanyName, ContactName, 'Suppliers'
|
||||
FROM Suppliers
|
||||
--ORDER BY City, CompanyName
|
||||
|
||||
|
||||
/****** Object: View Sales Totals by Amount Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Sales_Totals_by_Amount
|
||||
AS
|
||||
SELECT
|
||||
Order_Subtotals.Subtotal AS SaleAmount, Orders.OrderID, Customers.CompanyName, Orders.ShippedDate
|
||||
FROM Customers INNER JOIN
|
||||
(Orders INNER JOIN Order_Subtotals ON Orders.OrderID = Order_Subtotals.OrderID)
|
||||
ON Customers.CustomerID = Orders.CustomerID
|
||||
WHERE (Order_Subtotals.Subtotal >2500) AND (Orders.ShippedDate BETWEEN '19970101' And '19971231')
|
||||
|
||||
|
||||
/****** Object: View Summary of Sales by Quarter Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Summary_of_Sales_by_Quarter
|
||||
AS
|
||||
SELECT Orders.ShippedDate, Orders.OrderID, Order_Subtotals.Subtotal
|
||||
FROM Orders INNER JOIN Order_Subtotals ON Orders.OrderID = Order_Subtotals.OrderID
|
||||
WHERE Orders.ShippedDate IS NOT NULL
|
||||
--ORDER BY Orders.ShippedDate
|
||||
|
||||
|
||||
/****** Object: View Summary of Sales by Year Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Summary_of_Sales_by_Year
|
||||
AS
|
||||
SELECT Orders.ShippedDate, Orders.OrderID, Order_Subtotals.Subtotal
|
||||
FROM Orders INNER JOIN Order_Subtotals ON Orders.OrderID = Order_Subtotals.OrderID
|
||||
WHERE Orders.ShippedDate IS NOT NULL
|
||||
--ORDER BY Orders.ShippedDate
|
||||
|
||||
|
||||
/****** Object: View Sales by Category Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Sales_by_Category
|
||||
AS
|
||||
SELECT Categories.CategoryID, Categories.CategoryName, Products.ProductName,
|
||||
Sum(ODE.ExtendedPrice) AS ProductSales
|
||||
FROM Categories INNER JOIN
|
||||
(Products INNER JOIN
|
||||
(Orders INNER JOIN Order_Details_Extended ODE ON Orders.OrderID = ODE.OrderID)
|
||||
ON Products.ProductID = ODE.ProductID)
|
||||
ON Categories.CategoryID = Products.CategoryID
|
||||
WHERE Orders.OrderDate BETWEEN '19970101' And '19971231'
|
||||
GROUP BY Categories.CategoryID, Categories.CategoryName, Products.ProductName
|
||||
--ORDER BY Products.ProductName
|
||||
|
||||
|
||||
/****** Object: View Category Sales for 1997 Script Date: 08/12/2011 11:46:04 ******/
|
||||
create or replace view Category_Sales_for_1997
|
||||
AS
|
||||
SELECT v1997.CategoryName, Sum(v1997.ProductSales) AS CategorySales
|
||||
FROM Product_Sales_for_1997 v1997
|
||||
GROUP BY v1997.CategoryName
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
create [or replace] procedure procedure_name(parameter_list)
|
||||
language plpgsql
|
||||
as $$
|
||||
declare
|
||||
-- variable declaration
|
||||
begin
|
||||
-- stored procedure body
|
||||
end; $$
|
||||
*/
|
||||
|
||||
|
||||
/****** OK Object: StoredProcedure SalesByCategory Script Date: 08/12/2011 11:46:02 ******/
|
||||
CREATE or replace function SalesByCategory
|
||||
(
|
||||
_CategoryName varchar(15),
|
||||
_OrdYear int
|
||||
)
|
||||
RETURNS TABLE
|
||||
(
|
||||
_ProductName CHARACTER VARYING,
|
||||
_TotalPurchase decimal
|
||||
)
|
||||
language plpgsql
|
||||
as $$
|
||||
/*
|
||||
select * from SalesByCategory('Beverages',2006);
|
||||
*/
|
||||
declare
|
||||
-- variable declaration
|
||||
begin
|
||||
if (_OrdYear != 2006 AND _OrdYear != 2007 AND _OrdYear != 2008) then
|
||||
SET _OrdYear = 2006;
|
||||
end if;
|
||||
|
||||
RETURN QUERY
|
||||
SELECT ProductName,
|
||||
ROUND(SUM(OD.Quantity * (1-OD.Discount) * OD.UnitPrice), 0) AS TotalPurchase
|
||||
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 = _CategoryName
|
||||
AND date_part('year', O.OrderDate) = _OrdYear
|
||||
GROUP BY ProductName
|
||||
ORDER BY ProductName;
|
||||
end; $$
|
||||
|
||||
/****** OK Object: StoredProcedure CustOrdersOrders Script Date: 08/12/2011 11:46:02 ******/
|
||||
create or replace function custordersorders
|
||||
(
|
||||
_customerid int
|
||||
)
|
||||
returns table
|
||||
(
|
||||
_orderid int,
|
||||
_orderdate TIMESTAMP,
|
||||
_requireddate TIMESTAMP,
|
||||
_shippeddate TIMESTAMP
|
||||
)
|
||||
language plpgsql
|
||||
as $$
|
||||
/*
|
||||
select * from CustOrdersOrders(1);
|
||||
*/
|
||||
declare
|
||||
-- variable declaration
|
||||
begin
|
||||
return query
|
||||
select orderid,
|
||||
orderdate,
|
||||
requireddate,
|
||||
shippeddate
|
||||
from orders
|
||||
where customerid = _customerid
|
||||
order by orderid;
|
||||
end; $$
|
||||
|
||||
/****** OK Object: StoredProcedure CustOrderHist Script Date: 08/12/2011 11:46:01 ******/
|
||||
CREATE or replace function CustOrderHist
|
||||
(
|
||||
_CustomerID int
|
||||
)
|
||||
RETURNS SETOF RECORD
|
||||
language plpgsql
|
||||
as $$
|
||||
/*
|
||||
select * from CustOrderHist(1) f(ProductName CHARACTER VARYING,Total bigint)
|
||||
*/
|
||||
declare
|
||||
-- variable declaration
|
||||
begin
|
||||
RETURN QUERY
|
||||
SELECT ProductName, SUM(Quantity) Total
|
||||
FROM Products P, Order_Details OD, Orders O, Customers C
|
||||
WHERE C.CustomerID = _CustomerID
|
||||
AND C.CustomerID = O.CustomerID AND O.OrderID = OD.OrderID AND OD.ProductID = P.ProductID
|
||||
GROUP BY ProductName;
|
||||
end; $$
|
||||
|
||||
/****** OK Object: StoredProcedure CustOrdersDetail Script Date: 08/12/2011 11:46:01 ******/
|
||||
CREATE or replace function CustOrdersDetail
|
||||
(
|
||||
_OrderID int
|
||||
)
|
||||
returns table
|
||||
(
|
||||
_ProductName CHARACTER VARYING,
|
||||
_UnitPrice decimal,
|
||||
_Quantity smallint,
|
||||
_Discount decimal,
|
||||
_ExtendedPrice decimal
|
||||
)
|
||||
language plpgsql
|
||||
as $$
|
||||
/*
|
||||
select * from CustOrdersDetail(10666);
|
||||
*/
|
||||
declare
|
||||
-- variable declaration
|
||||
begin
|
||||
RETURN QUERY
|
||||
SELECT ProductName,
|
||||
ROUND(Od.UnitPrice, 2) UnitPrice,
|
||||
Quantity,
|
||||
(Discount * 100) Discount,
|
||||
ROUND((Quantity * (1 - Discount) * Od.UnitPrice), 2) ExtendedPrice
|
||||
FROM Products P, Order_Details Od
|
||||
WHERE Od.ProductID = P.ProductID and Od.OrderID = _OrderID;
|
||||
end; $$
|
||||
|
||||
/****** OK Object: StoredProcedure Ten Most Expensive Products Script Date: 08/12/2011 11:46:02 ******/
|
||||
create or replace function Ten_Most_Expensive_Products()
|
||||
returns table
|
||||
(
|
||||
_TenMostExpensiveProducts CHARACTER VARYING,
|
||||
_UnitPrice decimal
|
||||
)
|
||||
language plpgsql
|
||||
as $$
|
||||
/*
|
||||
select * from Ten_Most_Expensive_Products();
|
||||
*/
|
||||
declare
|
||||
-- variable declaration
|
||||
begin
|
||||
RETURN QUERY
|
||||
SELECT Products.ProductName AS TenMostExpensiveProducts, Products.UnitPrice
|
||||
FROM Products
|
||||
ORDER BY Products.UnitPrice DESC
|
||||
limit 10;
|
||||
end; $$
|
||||
|
||||
/****** OK Object: StoredProcedure Sales by Year Script Date: 08/12/2011 11:46:02 ******/
|
||||
create or replace function Sales_by_Year
|
||||
(
|
||||
_Beginning_Date TIMESTAMP,
|
||||
_Ending_Date TIMESTAMP
|
||||
)
|
||||
returns table
|
||||
(
|
||||
_ShippedDate TIMESTAMP,
|
||||
_OrderID int,
|
||||
_Subtotal decimal,
|
||||
_Year int
|
||||
)
|
||||
language plpgsql
|
||||
as $$
|
||||
/*
|
||||
select * from Sales_by_Year('2006-01-01','2006-12-31');
|
||||
*/
|
||||
declare
|
||||
-- variable declaration
|
||||
begin
|
||||
RETURN QUERY
|
||||
SELECT Orders.ShippedDate, Orders.OrderID, Order_Subtotals.Subtotal, cast(date_part('year', ShippedDate) as int) AS Year
|
||||
FROM Orders INNER JOIN Order_Subtotals ON Orders.OrderID = Order_Subtotals.OrderID
|
||||
WHERE Orders.ShippedDate Between _Beginning_Date And _Ending_Date;
|
||||
end; $$
|
||||
|
||||
/****** OK Object: StoredProcedure Employee Sales by Country Script Date: 08/12/2011 11:46:02 ******/
|
||||
create or replace function Employee_Sales_by_Country
|
||||
(
|
||||
_Beginning_Date TIMESTAMP,
|
||||
_Ending_Date TIMESTAMP
|
||||
)
|
||||
returns table
|
||||
(
|
||||
_Country CHARACTER VARYING,
|
||||
_LastName CHARACTER VARYING,
|
||||
_FirstName CHARACTER VARYING,
|
||||
_ShippedDate TIMESTAMP,
|
||||
_OrderID int,
|
||||
_SaleAmount decimal
|
||||
)
|
||||
language plpgsql
|
||||
as $$
|
||||
/*
|
||||
select * from Employee_Sales_by_Country('2006-01-01','2006-12-31');
|
||||
*/
|
||||
declare
|
||||
-- variable declaration
|
||||
begin
|
||||
RETURN QUERY
|
||||
SELECT Employees.Country, Employees.LastName, Employees.FirstName, Orders.ShippedDate, Orders.OrderID, Order_Subtotals.Subtotal AS SaleAmount
|
||||
FROM Employees INNER JOIN
|
||||
(Orders INNER JOIN Order_Subtotals ON Orders.OrderID = Order_Subtotals.OrderID)
|
||||
ON Employees.EmployeeID = Orders.EmployeeID
|
||||
WHERE Orders.ShippedDate Between _Beginning_Date And _Ending_Date;
|
||||
end; $$
|
||||
Reference in New Issue
Block a user