データを探索する

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
  • JOINにより10倍の重複
SQLでのレポーティング

探索してみましょう!

SQLでのレポーティング

Preparing Video For Download...