Reporting in SQL
Tyler Pernes
Learning & Development Consultant
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 |
+-------------+-----------------------------------------+--------+
preview of table: clients
+--------------------+
| country_of_client |
|--------------------|
| United States |
| United States |
| Mexico |
| United States |
| Canada |
| Canada |
+--------------------+
SELECT DISTINCT region
FROM countries;
+-------------------------+
| region |
|-------------------------|
| WESTERN EUROPE |
| null |
| C.W. IF IND. STATES |
| OCEANIA |
| NEAR EAST |
| SUB-SAHARAN AFRICA |
+-------------------------+
SELECT region
FROM countries
GROUP BY region;
+-------------------------+
| region |
|-------------------------|
| WESTERN EUROPE |
| null |
| C.W. IF IND. STATES |
| OCEANIA |
| NEAR EAST |
| SUB-SAHARAN AFRICA |
+-------------------------+
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 |
+-------------------------+---------+
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 |
+----------------+----------+
SELECT COUNT(*)
FROM country_stats;
+---------+
| count |
|---------|
| 3451 |
+---------+
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 |
+------------+
SELECT SUM(rev) AS revenue
FROM orders;
+------------+
| revenue |
|------------|
| 500.00 |
+------------+
JOIN
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 |
+------------+
SELECT SUM(rev) AS revenue
FROM orders;
+------------+
| revenue |
|------------|
| 500.00 |
+------------+
JOIN
Reporting in SQL