First commit, 已上架的電子書

This commit is contained in:
DATAEXPRESS\4734
2026-01-19 17:39:31 +08:00
commit 0b2351e4da
1146 changed files with 1442668 additions and 0 deletions
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
+311
View File
@@ -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; $$