Exploring our data

Reporting in SQL

Tyler Pernes

Learning & Development Consultant

Exploring with the console

Reporting in SQL

Exploring with the console

  • May show an inaccurate picture
preview of table: summer_games
+-------------+-----------------------------------------+--------+
| sport       | event                                   | bronze |
|-------------|-----------------------------------------|--------|
| Gymnastics  | Gymnastics Men's Individual All-Around  | null   |
| Gymnastics  | Gymnastics Men's Floor Exercise         | null   |
| Gymnastics  | Gymnastics Men's parallel Bars          | null   |
+-------------+-----------------------------------------+--------+
Reporting in SQL

Exploring with the console

  • No insight into distributions
preview of table: clients
+--------------------+
| country_of_client  |
|--------------------|
| United States      |
| United States      |
| Mexico             |
| United States      |
| Canada             |
| Canada             |
+--------------------+
Reporting in SQL

Exploring with queries

SELECT DISTINCT region
FROM countries;
+-------------------------+
| region                  |
|-------------------------|
| WESTERN EUROPE          |
| null                    |
| C.W. IF IND. STATES     |
| OCEANIA                 |  
| NEAR EAST               |
| SUB-SAHARAN AFRICA      |
+-------------------------+
Reporting in SQL

Exploring with queries

SELECT region
FROM countries
GROUP BY region;
+-------------------------+
| region                  |
|-------------------------|
| WESTERN EUROPE          |
| null                    |
| C.W. IF IND. STATES     |
| OCEANIA                 |  
| NEAR EAST               |
| SUB-SAHARAN AFRICA      |
+-------------------------+
Reporting in SQL

Field-level aggregations

SELECT region, COUNT(*) AS row_num
FROM countries
GROUP BY region
ORDER BY row_num DESC;
+-------------------------+---------+
| region                  | row_num |
|-------------------------|---------|
| SUB-SAHARAN AFRICA      | 49      |
| LATIN AMER. & CARIB     | 38      |
| ASIA (EX. NEAR EAST)    | 26      |
| WESTERN EUROPE          | 23      |
| OCEANIA                 | 15      |
| EASTERN EUROPE          | 15      |
+-------------------------+---------+
Reporting in SQL

Field-level aggregations

SELECT revenue_source, SUM(revenue) AS revenue
FROM orders
GROUP BY revenue_source
ORDER BY revenue DESC;
+----------------+----------+
| revenue_source | revenue  |
|----------------|----------|
| Olympics       | 122000   |
| NFL            | 80500    |
| MLB            | 300      |
| NBA            | 220      |
| NCAAF          | 120      |
| NCAAB          | 90       |
+----------------+----------+
Reporting in SQL

Table-level aggregations

SELECT COUNT(*)
FROM country_stats;
+---------+
| count   |
|---------|
| 3451    |
+---------+
Reporting in SQL

Query validation

Reporting in SQL

Query validation

QUERY:
SELECT SUM(rev) AS revenue
FROM
  (SELECT country, SUM(rev) AS rev
  FROM orders AS o
  JOIN countries AS c
  ON o.country_id = c.id
  GROUP BY country);
+------------+
| revenue    |
|------------|
| 50.00      |
+------------+
ORIGINAL TABLE:
SELECT SUM(rev) AS revenue
FROM orders;
+------------+
| revenue    |
|------------|
| 500.00     |
+------------+
  • Our Query (Left) = $50
  • Original Table (Right) = $500
  • Lost 90% of revenue from JOIN
Reporting in SQL

Query validation

QUERY:
SELECT SUM(rev) AS revenue
FROM
  (SELECT country, SUM(rev) AS rev
  FROM orders AS o
  JOIN country_stats AS cs
  ON o.country_id = cs.country_id
  GROUP BY country);
+------------+
| revenue    |
|------------|
| 5,000.00   |
+------------+
ORIGINAL TABLE:
SELECT SUM(rev) AS revenue
FROM orders;
+------------+
| revenue    |
|------------|
| 500.00     |
+------------+
  • Our Query (Left) = $5,000
  • Original Table (Right) = $500
  • 10x duplication from JOIN
Reporting in SQL

Let's explore!

Reporting in SQL

Preparing Video For Download...