SELECT country, state, city
FROM Offices
ORDER BY country, state, city;
SELECT COUNT(employeeNumber)
FROM Employees;
SELECT SUM(amount)
FROM Payments;
SELECT productLine
FROM ClassicModels.ProductLines
WHERE productLine REGEXP 'Cars';
SELECT SUM(amount)
FROM Payments
WHERE paymentDate = '2004-10-28';
SELECT amount
FROM Payments
WHERE amount > 100000;
SELECT productLine, productName
FROM Products
ORDER BY productLine, productName;
SELECT productLine, COUNT(productCode)
FROM Products
GROUP BY productLine;
SELECT MIN(amount)
FROM Payments;
SELECT amount
FROM Payments
WHERE amount > 2*(SELECT AVG(amount) FROM Payments);
SELECT AVG(MSRP/buyPrice)*100 - 100 from Products;
SELECT COUNT(DISTINCT(productCode)) FROM Products;
SELECT city, customerName FROM Customers WHERE salesRepEmployeeNumber IS NULL;
SELECT CONCAT(firstName, " ", lastName) FROM Employees
WHERE jobTitle REGEXP 'VP|Manager'
SELECT orderNumber AS `Order number`, FORMAT(SUM(quantityOrdered*priceEach),2) AS `Order value`
FROM OrderDetails
GROUP BY orderNumber HAVING SUM(quantityOrdered*priceEach) > 5000;
SELECT customerName, firstName, lastName
FROM Customers JOIN Employees
ON Employees.employeeNumber = Customers.salesRepEmployeeNumber;
SELECT SUM(amount)
FROM Payments JOIN Customers
ON Customers.customerNumber = Payments.customerNumber
WHERE customerName = 'Atelier graphique';
SELECT paymentDate, SUM(amount)
FROM Payments
GROUP BY paymentDate;
SELECT productName, Products.productCode
FROM Products
WHERE NOT EXISTS (SELECT * FROM OrderDetails WHERE OrderDetails.productCode = Products.productCode);
SELECT customerName, SUM(amount)
FROM Payments JOIN Customers
ON Payments.customerNumber = Customers.customerNumber
GROUP BY customerName;
SELECT COUNT(orderNumber)
FROM Orders JOIN Customers
ON Orders.customerNumber = Customers.customerNumber
AND customerName = 'Herkku Gifts';
SELECT firstName, lastName
FROM Employees JOIN Offices
ON Employees.officeCode = Offices.officeCode
AND city = 'Boston';
SELECT customerNumber, amount
FROM Payments
WHERE amount > 100000
ORDER BY amount DESC;
SELECT SUM(quantityOrdered * priceEach) AS Value
FROM OrderDetails JOIN Orders
ON Orders.orderNumber = OrderDetails.orderNumber
WHERE status = 'On Hold';
SELECT customerName, COUNT(orderNumber)
FROM Orders JOIN Customers
ON Orders.customerNumber = Customers.customerNumber
WHERE status = 'On Hold'
GROUP BY customerName;
SELECT orderDate, productName
FROM OrderDetails JOIN Orders
ON OrderDetails.orderNumber = Orders.orderNumber
JOIN Products on Products.productCode = OrderDetails.productCode
ORDER BY orderDate ASC;
SELECT orderDate
FROM OrderDetails JOIN Products
ON OrderDetails.productCode = Products.productCode
JOIN Orders ON Orders.orderNumber = OrderDetails.orderNumber
WHERE productName = '1940 Ford Pickup Truck'
ORDER BY orderDate DESC;
SELECT customerName, Orders.orderNumber, FORMAT(SUM(quantityOrdered * priceEach),2) AS Total
FROM Customers JOIN Orders
ON Customers.customerNumber = Orders.customerNumber
JOIN OrderDetails ON Orders.orderNumber = OrderDetails.orderNumber
GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 25000
SELECT * FROM Products
WHERE NOT EXISTS
(SELECT * FROM Orders
WHERE NOT EXISTS
(SELECT * FROM OrderDetails
WHERE Products.productCode = OrderDetails.productCode
AND Orders.orderNumber = OrderDetails.orderNumber));
SELECT DISTINCT(productName), priceEach, MSRP
FROM OrderDetails JOIN Products
ON OrderDetails.productCode = Products.productCode
AND priceEach < .8*MSRP;
SELECT DISTINCT(productName)
FROM Products JOIN OrderDetails
ON Products.productCode = OrderDetails.productCode
WHERE priceEach >= 2 * buyPrice
ORDER BY productName;
SELECT DISTINCT(productName)
FROM Orders JOIN OrderDetails ON Orders.orderNumber = OrderDetails.orderNumber
JOIN Products ON OrderDetails.productCode = Products.productCode
AND DAYNAME(orderDate) = "Monday";
SELECT productName, FORMAT(quantityInStock,0) AS `Quantity in stock`
FROM OrderDetails JOIN Orders ON Orders.orderNumber = OrderDetails.orderNumber
JOIN Products on OrderDetails.productCode = Products.productCode
WHERE status = 'On Hold';
SELECT * FROM Products WHERE LOWER(productName) REGEXP 'Ford';
SELECT * FROM Products WHERE LOWER(productName0 REGEXP 'ship$';
SELECT country, COUNT(*) FROM Customers
WHERE country REGEXP 'Denmark|Norway|Sweden'
GROUP BY country;'
SELECT * FROM Products WHERE productCode REGEXP 'S700_1[0-4][0-9]{2}';
SELECT * FROM Customers WHERE customerName REGEXP '[0-9]';
SELECT * FROM Employees WHERE firstName REGEXP 'Dian';
SELECT * FROM Products WHERE LOWER(productName) REGEXP 'ship|boat';
SELECT * FROM Products WHERE productCode REGEXP '^S700' ;
SELECT * FROM Employees WHERE firstName REGEXP '[BL]array';
SELECT * FROM Employees WHERE LOWER(firstName ) REGEXP '[^a-z]';
SELECT DISTINCT(productVendor) FROM Products WHERE LOWER(productVendor) REGEXP 'diecast$';
SELECT * FROM Employees WHERE reportsTo IS NULL;
SELECT reports.firstname, reports.lastname
FROM Employees boss JOIN Employees reports
ON boss.employeeNumber = reports.reportsTo
WHERE boss.firstName = "William" and boss.lastName = "Patterson";
SELECT productName
FROM OrderDetails JOIN Orders ON OrderDetails.orderNumber = Orders.orderNumber
JOIN Customers ON Orders.customerNumber = Customers.customerNumber
JOIN Products ON Products.productCode = OrderDetails.productCode
WHERE customerName = 'Herkku Gifts';
SELECT CONCAT(firstName, ' ',lastName) AS Name, FORMAT(.05 * SUM(quantityOrdered * priceEach),0) AS Commission
FROM Employees JOIN Customers ON Employees.employeeNumber = Customers.salesRepEmployeeNumber
JOIN Orders ON Customers.customerNumber = Orders.customerNumber
JOIN OrderDetails ON Orders.orderNumber = OrderDetails.orderNumber
GROUP BY employeeNumber
ORDER BY lastName, firstName ASC;
SELECT DATEDIFF(MAX(orderDate), MIN(orderDate)) FROM Orders;
SELECT customerName, AVG(DATEDIFF(shippedDate,orderDate))AS diff FROM Customers JOIN Orders
ON Customers.customerNumber = Orders.customerNumber
GROUP BY customerName
ORDER BY diff DESC;
SELECT FORMAT(SUM(quantityOrdered*priceEach),0) as orderValue
FROM Orders JOIN OrderDetails
ON Orders.orderNumber = OrderDetails. orderNumber
AND YEAR(orderDate) = 2004
AND MONTH(orderDate) = 8;
CREATE VIEW pay2004 (customerName, payTotal)
AS (SELECT customerName,SUM(amount)
FROM Payments JOIN Customers
ON Payments.customerNumber = Customers.customerNumber
AND YEAR(paymentDate) = 2004
GROUP BY customerName);
CREATE VIEW order2004 (customerName, orderTotal) AS
(SELECT customerName, SUM(quantityOrdered*priceEach)
FROM Customers JOIN Orders ON Customers.customerNumber = Orders.customerNumber
JOIN OrderDetails ON Orders.orderNumber = OrderDetails. orderNumber
WHERE YEAR(orderDate) = 2004
GROUP BY customerName);
SELECT pay2004.customerName AS Customer, FORMAT(payTotal,0) AS Payments, FORMAT(orderTotal,0) AS Orders, FORMAT(payTotal - orderTotal,0) as Difference
FROM pay2004 JOIN order2004
ON pay2004.customerName = order2004.customerName
WHERE ABS(payTotal - orderTotal) > 100;
Alternatively, you can write a single query using common table expression syntax which first creates two temporary tables, pay and ord, and then joins them
WITH
pay AS (SELECT customerName,SUM(amount) AS payTotal
FROM Payments JOIN Customers
ON Payments.customerNumber = Customers.customerNumber
AND YEAR(paymentDate) = 2004
GROUP BY customerName),
ord AS (SELECT customerName, SUM(quantityOrdered*priceEach) AS orderTotal
FROM Customers JOIN Orders
ON Customers.customerNumber = Orders.customerNumber
JOIN OrderDetails ON Orders.orderNumber = OrderDetails. orderNumber
AND YEAR(orderDate) = 2004
GROUP BY customerName)
SELECT Pay.customerName AS Customer, FORMAT(payTotal,0)
AS Payments, FORMAT(orderTotal,0) AS Orders, FORMAT(payTotal - orderTotal,0) AS Difference
FROM pay JOIN ord
ON Pay.customerName = Ord.customerName
AND ABS(payTotal-orderTotal) > 100;
SELECT CONCAT(firstName, ' ', lastName) from Employees
WHERE reportsTo IN
(SELECT employeeNumber FROM Employees
WHERE reportsTo =
(SELECT employeeNumber FROM Employees
WHERE firstName = 'Diane' AND lastName = 'Murphy'));
SELECT productName, format(quantityInStock*buyPrice,0) AS Stock, format(quantityInStock*buyPrice/(totalValue)*100,2)
AS Percent FROM Products, (SELECT SUM(quantityInStock*buyPrice) AS totalValue FROM Products) AS T ORDER BY quantityInStock*buyPrice/(totalValue)*100 DESC;
CREATE FUNCTION mpg_to_lkm(mpg REAL)
RETURNS REAL
RETURN 235.214583/mpg;
DELIMITER $$
CREATE PROCEDURE increasePrice (
IN percentage DECIMAL(5,2))
LANGUAGE SQL
DETERMINISTIC
BEGIN
UPDATE Products
SET buyPrice = buyPrice + buyPrice*percentage;
END $$
DELIMITER ;
SELECT FORMAT(SUM(amount),0) as Payments
FROM Payments
WHERE YEAR(paymentDate) = 2004
AND MONTH(paymentDate) = 7;
WITH
t1 AS (SELECT MONTH(paymentDate) AS period, sum(amount) AS payments FROM Payments
WHERE YEAR(paymentDate) = 2004
GROUP BY MONTH(paymentDate)),
t2 AS (SELECT MONTH(orderDate) AS period, sum(quantityOrdered*priceEach) AS orders FROM Orders, OrderDetails
WHERE Orders.orderNumber = OrderDetails.orderNumber
AND YEAR(orderDate) = 2004
GROUP BY MONTH(orderDate))
SELECT t1.period, FORMAT(payments/orders,2) AS ratio FROM
t1 JOIN t2
ON t1.period = t2.period;
WITH
t2003 AS (SELECT YEAR(paymentDate) AS 'year', MONTH(paymentDate) AS 'month', sum(amount) AS amount FROM Payments
WHERE YEAR(paymentDate) = 2003
GROUP BY YEAR(paymentDate), MONTH(paymentDate)),
t2004 AS (SELECT YEAR(paymentDate) AS 'year', MONTH(paymentDate) AS 'month', sum(amount) AS amount FROM Payments
WHERE YEAR(paymentDate) = 2004
GROUP BY YEAR(paymentDate), MONTH(paymentDate))
SELECT t2003.month,format((t2004.amount - t2003.amount),2) AS variance
FROM t2003 JOIN t2004
ON t2003.month = t2004.month
ORDER BY t2003.month;
DELIMITER //
CREATE PROCEDURE reportOrderValue (
IN inMonth INT,
IN inYear INT,
IN inString VARCHAR(20))
LANGUAGE SQL
BEGIN
SELECT customerName AS Customer, (FORMAT(SUM(quantityOrdered*priceEach),0)) AS `Order Value`
FROM Orders JOIN OrderDetails
ON Orders.orderNumber = OrderDetails. orderNumber
JOIN Customers
ON Orders.customerNumber = Customers.customerNumber
WHERE YEAR(orderDate) = inYear
AND MONTH(orderDate) = inMonth
AND customerName REGEXP inString
GROUP BY customerName;
END //
DELIMITER //
CREATE PROCEDURE changeCredit (
IN inNation CHARACTER(20),
IN inPercent DECIMAL(5,2))
LANGUAGE SQL
BEGIN
UPDATE Customers
SET creditLimit = creditLimit*(1 + inPercent)
WHERE country = inNation;
END //
WITH
p1 AS (SELECT Products.productCode, productName AS `Product 1`, orderNumber
FROM Products JOIN OrderDetails
ON Products.productCode = OrderDetails.productCode),
p2 AS (SELECT Products.productCode, productName AS `Product 2`, orderNumber
FROM Products JOIN OrderDetails
ON Products.productCode = OrderDetails.productCode)
SELECT `Product 1`, `Product 2`, count(*) as Frequency FROM p1 JOIN p2
ON p1.orderNumber = p2.OrderNumber
WHERE p1.productCode > p2.productCode
GROUP BY `Product 1`, `Product 2` HAVING Frequency > 10
ORDER BY Frequency DESC, `Product 1`, `Product 2`;
SELECT customerName, FORMAT(SUM(quantityOrdered*priceEach),0) AS Revenue,
FORMAT(SUM(quantityOrdered*priceEach)/(SELECT SUM(quantityOrdered*priceEach) FROM Customers JOIN Orders
ON Customers.customerNumber = Orders.customerNumber
JOIN OrderDetails ON Orders.orderNumber = OrderDetails. orderNumber)*100,2) AS Percent
FROM Customers JOIN Orders
ON Customers.customerNumber = Orders.customerNumber
JOIN OrderDetails ON Orders.orderNumber = OrderDetails. orderNumber
GROUP BY customerName
ORDER BY customerName;
SELECT customerName, FORMAT(SUM(quantityOrdered*(priceEach-buyPrice)),0) AS Profit,
FORMAT(SUM(quantityOrdered*(priceEach-buyPrice))/(SELECT SUM(quantityOrdered*(priceEach-buyPrice)) FROM Customers JOIN Orders
ON Customers.customerNumber = Orders.customerNumber
JOIN OrderDetails ON Orders.orderNumber = OrderDetails.orderNumber
JOIN Products ON Products.productCode = OrderDetails.productCode)*100,2) AS Percent
FROM Customers JOIN Orders
ON Customers.customerNumber = Orders.customerNumber
JOIN OrderDetails ON Orders.orderNumber = OrderDetails.orderNumber
GROUP BY customerName
ORDER BY Percent DESC;
SELECT concat(firstName, " ", lastName) AS `Sales Representative`, FORMAT(SUM(quantityOrdered*priceEach),0) AS Revenue
FROM Employees JOIN Customers
ON Employees.employeeNumber = Customers.salesRepEmployeeNumber
JOIN Orders ON Customers.customerNumber = Orders.customerNumber
JOIN OrderDetails ON Orders.orderNumber = OrderDetails. orderNumber
GROUP BY `Sales Representative`;
SELECT concat(firstName, " ", lastName) AS `Sales Representative`,
FORMAT(SUM(quantityOrdered*(priceEach - buyPrice)),0) AS Profit
FROM Employees JOIN Customers
ON Employees.employeeNumber = Customers.salesRepEmployeeNumber
JOIN Orders ON Customers.customerNumber = Orders.customerNumber
JOIN OrderDetails ON Orders.orderNumber = OrderDetails.orderNumber
JOIN Products ON Products.ProductCode = OrderDetails.ProductCode
GROUP BY `Sales Representative`
ORDER BY SUM(quantityOrdered*(priceEach - buyPrice)) DESC;
SELECT productName AS Product, FORMAT(SUM(quantityOrdered*priceEach),0) AS Revenue
FROM Products JOIN OrderDetails
ON Products.productCode = OrderDetails.productCode
GROUP BY productName
ORDER BY productName;
SELECT productLine AS `Product line`, FORMAT(SUM(quantityOrdered*(priceEach -buyPrice)),0) AS Profit
FROM Products JOIN OrderDetails
ON Products.productCode = OrderDetails.productCode
GROUP BY productLine
ORDER BY SUM(quantityOrdered*(priceEach -buyPrice)) DESC;
SELECT LEFT(amount,1) as Digit, COUNT(*) as Observed,
ROUND((SELECT COUNT(*) FROM Payments)*LOG10(1+1/left(amount,1)),0) as Expected
FROM Payments
GROUP BY Digit, Expected
ORDER BY Digit;
You need to use the Chi-squared statistic to test whether the observed data follows Benford's law. There is an R package, benford.analysis, for computing this statistic and other measures.
Benford's law is used in accounting, auditing, and fraud detection.
WITH
t2003 AS (SELECT productName, Products.productCode, SUM(quantityOrdered*priceEach) AS OrderValue FROM Orders JOIN OrderDetails
ON Orders.`orderNumber` = OrderDetails.`orderNumber`
JOIN Products ON OrderDetails.productCode = Products.productCode
WHERE YEAR(orderDate) = 2003
GROUP BY Products.productCode),
t2004 AS (SELECT Products.productCode, SUM(quantityOrdered*priceEach) AS OrderValue FROM Orders JOIN OrderDetails
ON Orders.`orderNumber` = OrderDetails.`orderNumber`
JOIN Products ON OrderDetails.productCode = Products.productCode
WHERE YEAR(orderDate) = 2004
GROUP BY Products.productCode)
SELECT productName, format(t2003.OrderValue,0) AS Y2003, format(t2004.OrderValue,0) AS Y2004,
FORMAT(t2004.OrderValue/t2003.OrderValue,2) AS Ratio FROM t2003 JOIN t2004
ON t2003.productCode = t2004.productCode
ORDER BY t2004.OrderValue/t2003.OrderValue DESC;
WITH
t2003 AS(SELECT customerName, Customers.customerNumber, sum(amount) as Payments FROM Customers JOIN Payments
ON Customers.`customerNumber` = Payments.customerNumber
WHERE YEAR(paymentDate) = 2003
GROUP BY Customers.customerNumber),
t2004 AS (SELECT customerName, Customers.customerNumber, sum(amount) as Payments FROM Customers JOIN Payments
ON Customers.`customerNumber` = Payments.customerNumber
WHERE YEAR(paymentDate) = 2004
GROUP BY Customers.customerNumber)
SELECT t2003.customerName as `Customer name`, format(t2003.Payments,0) as Y2003,
format(t2004.Payments,0) as Y2004, FORMAT(t2004.Payments/t2003.Payments,2) as Ratio
FROM t2003 JOIN t2004
ON t2003.customerNumber = t2004.customerNumber
ORDER BY t2004.Payments/t2003.Payments DESC;
SELECT productName FROM Products
JOIN OrderDetails ON Products.productCode = OrderDetails.productCode
JOIN Orders ON Orders.orderNumber = OrderDetails.orderNumber WHERE YEAR(orderDate) = 2003
AND Products.productCode NOT IN
(SELECT Products.productCode FROM Products
JOIN OrderDetails ON Products.productCode = OrderDetails.productCode
JOIN Orders ON Orders.orderNumber = OrderDetails.orderNumber WHERE YEAR(orderDate) = 2004);
SELECT DISTINCT customerName as `Customer name` FROM Customers
JOIN Payments ON Customers.customerNumber = Payments.customerNumber
WHERE customerName NOT IN
(SELECT customerName FROM Customers
JOIN Payments ON Customers.customerNumber = Payments.customerNumber
WHERE YEAR(`paymentDate`) = 2003);
SELECT CONCAT(firstName, ' ',lastName) FROM Employees wrk WHERE EXISTS
(SELECT * FROM Employees WHERE
wrk.reportsTo = Employees.employeeNumber AND lastName = 'Patterson' AND firstName = 'Mary');
SELECT amount, DATE(paymentDate) FROM Payments P1
WHERE amount > 2*(SELECT AVG(amount) FROM Payments P2
WHERE MONTH(P1.paymentDate) = MONTH(P2.paymentDate)
AND YEAR(P1.paymentDate) = YEAR(P2.paymentDate))
ORDER BY P1.paymentDate;
SELECT productName, productLine, FORMAT(100*quantityInStock*Buyprice/(SELECT SUM(quantityInStock*Buyprice) FROM Products WHERE P.productLine = Products.productLine),2) AS Percent
FROM Products P ORDER BY productLine, Percent DESC;
SELECT productName FROM Products WHERE productCode IN
(SELECT productCode FROM OrderDetails O
WHERE quantityOrdered*priceEach > .5*(SELECT sum(quantityOrdered*priceEach) FROM OrderDetails
WHERE OrderDetails.orderNumber = O.orderNumber
GROUP BY O.orderNumber HAVING count(*) > 2));
* Remember x is latitude and y is longitude
SELECT customerName, city FROM Customers WHERE x(customerLocation) < 0;
SELECT customerName, city FROM Customers WHERE x(customerLocation) < (SELECT x(officeLocation) FROM Offices WHERE city = "NYC") AND y(customerLocation) < (SELECT y(officeLocation) FROM Offices WHERE city = "NYC");
SELECT customerName, Customers.city FROM Customers, Offices WHERE Offices.city = 'Tokyo' AND ST_DISTANCE(customerLocation,officeLocation) =
(SELECT MIN(ST_DISTANCE(customerLocation,officeLocation)) FROM Offices);
SELECT customerName, Customers.city FROM Customers, Offices WHERE Customers.country = 'France'
AND ST_DISTANCE(customerLocation,officeLocation)=
(SELECT MAX(ST_DISTANCE(customerLocation,officeLocation)) FROM Customers, Offices WHERE Offices.city = 'Paris' AND Customers.country = 'France');
SELECT customerName, city FROM Customers
WHERE x(customerLocation) = (SELECT max(x(customerLocation)) FROM Customers);
For each problem, use R to run an SQL query and then visualize the results.
library(ggvis)
library(DBI)
conn <- dbConnect(RMySQL::MySQL(), "richardtwatson.com", dbname="ClassicModels", user="db1", password="student")
d <- dbGetQuery(conn, "SELECT productScale FROM Products")
d %>% ggvis(~productScale) %>% layer_bars(fill:='blue') %>%
add_axis('x',title='Product scale') %>%
add_axis('y',title='Count')
library(ggvis)
library(DBI)
conn <- dbConnect(RMySQL::MySQL(), "richardtwatson.com", dbname="ClassicModels", user="db1", password="student")
d <- dbGetQuery(conn, "SELECT MONTH(paymentDate) AS Month, sum(amount) AS Sum FROM Payments WHERE YEAR(paymentDate) = 2004 GROUP BY MONTH(paymentDate)")
d %>% ggvis(~Month, ~Sum) %>% layer_lines(stroke:='blue') %>%
add_axis('x',title='Month') %>%
add_axis('y',title='Total payments',title_offset=70)
library(ggvis)
library(DBI)
conn <- dbConnect(RMySQL::MySQL(), "richardtwatson.com", dbname="ClassicModels", user="db1", password="student")
d <- dbGetQuery(conn,"SELECT Country, sum(quantityOrdered*priceEach) AS Orders FROM Orders JOIN OrderDetails ON Orders.orderNumber = OrderDetails.orderNumber JOIN Customers ON Customers.customerNumber = Orders.customerNumber AND country IN ('Denmark','Finland', 'Norway','Sweden') GROUP BY country")
d %>% ggvis(~Country, ~Orders) %>% layer_bars(fill:='yellow') %>%
add_axis('x',title='Country') %>%
add_axis('y',title='Order value',title_offset=70)
library(ggvis)
library(DBI)
conn <- dbConnect(RMySQL::MySQL(), "richardtwatson.com", dbname="ClassicModels", user="db1", password="student")
d <- dbGetQuery(conn,"SELECT count(*) as frequency, productLine, city
FROM Products JOIN OrderDetails, Orders, Customers
WHERE Products.productCode = OrderDetails.productCode
AND OrderDetails.orderNumber = Orders.orderNumber
AND Orders.customerNumber = Customers.customerNumber
AND country = 'USA'
GROUP BY city")
d %>% ggvis( ~productLine, ~city, fill= ~frequency) %>%
layer_rects(width = band(), height = band()) %>%
layer_text(text:=~frequency, stroke:='white', align:='left', baseline:='top') %>%
add_axis('x',title='Product line') %>%
add_axis('y',title='City',title_offset=80)
Workbench file for the following image.
This page is part of the promotional and support
material for Data Management (open edition) by Richard T. Watson For questions and comments please contact the author |