探索数据

SQL 报表制作

Tyler Pernes

Learning & Development Consultant

用控制台探索

SQL 报表制作

用控制台探索

  • 可能呈现出不准确的情况
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   |
+-------------+-----------------------------------------+--------+
SQL 报表制作

用控制台探索

  • 无法了解分布
preview of table: clients
+--------------------+
| country_of_client  |
|--------------------|
| United States      |
| United States      |
| Mexico             |
| United States      |
| Canada             |
| Canada             |
+--------------------+
SQL 报表制作

用查询探索

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

用查询探索

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

字段级聚合

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      |
+-------------------------+---------+
SQL 报表制作

字段级聚合

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       |
+----------------+----------+
SQL 报表制作

表级聚合

SELECT COUNT(*)
FROM country_stats;
+---------+
| count   |
|---------|
| 3451    |
+---------+
SQL 报表制作

查询校验

SQL 报表制作

查询校验

查询:
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     |
+------------+
  • 我们的查询(左)= $50
  • 原始表(右)= $500
  • JOIN 丢失了 90% 的营收
SQL 报表制作

查询校验

查询:
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     |
+------------+
  • 我们的查询(左)= $5,000
  • 原始表(右)= $500
  • 来自 JOIN10 倍重复
SQL 报表制作

一起探索!

SQL 报表制作

Preparing Video For Download...