Deals Of The Week - hours only!Up to 80% off on all courses and bundles.-Close
Introduction
Providing detailed information and counting objects
Calculating metrics for multiple business objects
10. Choosing information to show
Understanding the difference between various count metrics
Summary

Instruction

Excellent! Let's take a look at the correct query from the previous exercise once again:

SELECT
  e.employee_id,
  e.first_name,
  e.last_name,
  COUNT(*) AS orders_count
FROM orders o
JOIN employees e
  ON o.employee_id = e.employee_id
GROUP BY e.employee_id,
  e.first_name,
  e.last_name;

We're grouping by employee_id, but that doesn't mean we need to include it in the SELECT clause. The following query will work just fine:

SELECT
  e.first_name,
  e.last_name,
  COUNT(*) AS orders_count
FROM orders o
JOIN employees e
  ON o.employee_id = e.employee_id
GROUP BY e.employee_id,
  e.first_name,
  e.last_name;

We've already learned that all columns in the SELECT clause that aren't used in an aggregate function must appear in the GROUP BY clause. The opposite, however, is not true: You don't have to SELECT all columns used in the GROUP BY clause.

Exercise

Which customers paid the most for orders made in June 2016 or July 2016? Show two columns:

  1. company_name
  2. total_paid, calculated as the total price (after discount) paid for all orders made by a given customer in June 2016 or July 2016.

Sort the results by total_paid in descending order.

Stuck? Here's a hint!

Use the following formula to find the total amount paid:

SUM(unit_price * quantity * (1 - discount)) AS total_paid

Remember that you need to group by customer_id, even though the column won't be shown in the report.

To filter dates, use:

WHERE order_date >= '2016-06-01' AND order_date < '2016-08-01'