Additional SQL queries
ClassicModels is a fictitious company. Use the ClassicModels database to answer the following requests (SQL to create the database). Your instructor has the answers to all queries.
The latitude and longitude are specified for office and customer locations in the Offices and Customers tables, respectively. The SRID is set to 4326 to indicate the Spacial Reference System (SRS) is geographic (see Chapter 11 for more details on SRID and SRS).
You can access ClassicModels at richardtwatson.com with accountid=db1 and password=student.
- Prepare a list of offices sorted by country, state, city.
- How many employees are there in the company?
- What is the total of payments received?
- List the product lines that contain 'Cars'.
- Report total payments for October 28, 2004.
- Report those payments greater than $100,000.
- List the products in each product line.
- How many products in each product line?
- What is the minimum payment received?
- List all payments greater than twice the average payment.
- What is the average percentage markup of the MSRP on buyPrice?
- How many distinct products does ClassicModels sell?
- Report the name and city of customers who don't have sales representatives?
- What are the names of executives with VP or Manager in their title? Use the CONCAT function to combine the employee's first name and last name into a single field for reporting.
- Which orders have a value greater than $5,000?
One to many relationship
- Report the account representative for each customer.
- Report total payments for Atelier graphique.
- Report the total payments by date
- Report the products that have not been sold.
- List the amount paid by each customer.
- How many orders have been placed by Herkku Gifts?
- Who are the employees in Boston?
- Report those payments greater than $100,000. Sort the report so the customer who made the highest payment appears first.
- List the value of 'On Hold' orders.
- Report the number of orders 'On Hold' for each customer.
Many to many relationship
- List products sold by order date.
- List the order dates in descending order for orders for the 1940 Ford Pickup Truck.
- List the names of customers and their corresponding order number where a particular order from that customer has a value greater than $25,000?
- Are there any products that appear on all orders?
- List the names of products sold at less than 80% of the MSRP.
- Reports those products that have been sold with a markup of 100% or more (i.e., the priceEach is at least twice the buyPrice)
- List the products ordered on a Monday.
- What is the quantity on hand for products listed on 'On Hold' orders?
- Find products containing the name 'Ford'.
- List products ending in 'ship'.
- Report the number of customers in Denmark, Norway, and Sweden.
- What are the products with a product code in the range S700_1000 to S700_1499?
- Which customers have a digit in their name?
List the names of employees called Dianne or Diane.
List the products containing ship or boat in their product name.
- List the products with a product code beginning with S700.
List the names of employees called Larry or Barry.
List the names of employees with non-alphabetic characters in their names.
- List the vendors whose name ends in Diecast
- Who is at the top of the organization (i.e., reports to no one).
- Who reports to William Patterson?
- List all the products purchased by Herkku Gifts.
- Compute the commission for each sales representative, assuming the commission is 5% of the value of an order. Sort by employee last name and first name.
- What is the difference in days between the most recent and oldest order date in the Orders file?
- Compute the average time between order date and ship date for each customer ordered by the largest difference.
- What is the value of orders shipped in August 2004? (Hint).
- Compute the total value ordered, total amount paid, and their difference for each customer for orders placed in 2004 and payments received in 2004 (Hint; Create views for the total paid and total ordered).
- List the employees who report to those employees who report to Diane Murphy. Use the CONCAT function to combine the employee's first name and last name into a single field for reporting.
- What is the percentage value of each product in inventory sorted by the highest percentage first (Hint: Create a view first).
- Write a function to convert miles per gallon to liters per 100 kilometers.
- Write a procedure to increase the price of a specified product category by a given percentage. You will need to create a product table with appropriate data to test your procedure. Alternatively, load the ClassicModels database on your personal machine so you have complete access. You have to change the DELIMITER prior to creating the procedure.
- What is the value of orders shipped in August 2004? (Hint).
- What is the ratio the value of payments made to orders received for each month of 2004. (i.e., divide the value of payments made by the orders received)?
- What is the difference in the amount received for each month of 2004 compared to 2003?
- Write a procedure to report the amount ordered in a specific month and year for customers containing a specified character string in their name.
- Write a procedure to change the credit limit of all customers in a specified country by a specified percentage.
- Basket of goods analysis: A common retail analytics task is to analyze each basket or order to learn what products are often purchased together. Report the names of products that appear in the same order ten or more times.
- ABC reporting: Compute the revenue generated by each customer based on their orders. Also, show each customer's revenue as a percentage of total revenue. Sort by customer name.
- Compute the profit generated by each customer based on their orders. Also, show each customer's profit as a percentage of total profit. Sort by profit descending.
- Compute the revenue generated by each sales representative based on the orders from the customers they serve.
- Compute the profit generated by each sales representative based on the orders from the customers they serve. Sort by profit generated descending.
- Compute the revenue generated by each product, sorted by product name.
- Compute the profit generated by each product line, sorted by profit descending.
- Same as Last Year (SALY) analysis: Compute the ratio for each product of sales for 2003 versus 2004.
- Compute the ratio of payments for each customer for 2003 versus 2004.
- Find the products sold in 2003 but not 2004.
- Find the customers without payments in 2003.
- Who reports to Mary Patterson?
- Which payments in any month and year are more than twice the average for that month and year (i.e. compare all payments in Oct 2004 with the average payment for Oct 2004)? Order the results by the date of the payment. You will need to use the date functions.
- Report for each product, the percentage value of its stock on hand as a percentage of the stock on hand for product line to which it belongs. Order the report by product line and percentage value within product line descending. Show percentages with two decimal places.
- For orders containing more than two products, report those products that constitute more than 50% of the value of the order.
The Offices and Customers tables contain the latitude and longitude of each office and customer in officeLocation and customerLocation, respectively, in POINT format. Conventionally, latitude and longitude and reported as a pair of points, with latitude first.
- Which customers are in the Southern Hemisphere?
- Which US customers are south west of the New York office?
- Which customers are closest to the Tokyo office (i.e., closer to Tokyo than any other office)?
- Which French customer is furthest from the Paris office?
- Who is the northernmost customer?
- What is the distance between the Paris and Boston offices?
To be precise for long distances, the distance in kilometers, as the crow flies, between two points when you have latitude and longitude, is (ACOS(SIN(lat1*PI()/180)*SIN(lat2*PI()/180)+COS(lat1*PI()/180)*COS(lat2*PI()/180)* COS((lon1-lon2)*PI()/180))*180/PI())*60*1.8532
For each problem, use R to run an SQL query and then visualize the results. The first step in all cases is to load the MySQL library and access the database.
- Visualize in blue the number of items for each product scale.
- Prepare a line plot with appropriate labels for total payments for each month in 2004.
- Create a histogram with appropriate labels for the value of orders received from the Nordic countries (Denmark,Finland, Norway,Sweden).
- Create a heatmap for product lines and Norwegian cities.
- Create a parallel coordinates plot for product scale, quantity in stock, and MSRP in the Products table.
Workbench file for the following image.
This page is part of the promotional and support material for Data Management (sixth edition) by Richard T. Watson
For questions and comments please contact the author