From 378ce0ce70aefec87e4846a7f2c81737040eb282 Mon Sep 17 00:00:00 2001 From: msyamkumar <msyamkumar@wisc.edu> Date: Mon, 28 Nov 2022 06:27:30 -0600 Subject: [PATCH] Lecture 33 notebooks --- .../database2-checkpoint.ipynb | 4480 ----------------- .../lec_33_database2-checkpoint.ipynb | 3164 ------------ ...lec_33_database2_template-checkpoint.ipynb | 864 ---- .../.ipynb_checkpoints/web3-checkpoint.ipynb | 1237 ----- .../web3_template-checkpoint.ipynb | 290 -- .../lec-33/lec_33_database2.ipynb | 391 +- .../lec-33/lec_33_database2_template.ipynb | 82 +- 7 files changed, 362 insertions(+), 10146 deletions(-) delete mode 100644 f22/meena_lec_notes/lec-33/.ipynb_checkpoints/database2-checkpoint.ipynb delete mode 100644 f22/meena_lec_notes/lec-33/.ipynb_checkpoints/lec_33_database2-checkpoint.ipynb delete mode 100644 f22/meena_lec_notes/lec-33/.ipynb_checkpoints/lec_33_database2_template-checkpoint.ipynb delete mode 100644 f22/meena_lec_notes/lec-33/.ipynb_checkpoints/web3-checkpoint.ipynb delete mode 100644 f22/meena_lec_notes/lec-33/.ipynb_checkpoints/web3_template-checkpoint.ipynb diff --git a/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/database2-checkpoint.ipynb b/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/database2-checkpoint.ipynb deleted file mode 100644 index 237fbd8..0000000 --- a/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/database2-checkpoint.ipynb +++ /dev/null @@ -1,4480 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Database 2\n", - "## Last lecture: SQL query clauses\n", - "- FROM: table\n", - "- SELECT: columns\n", - "- WHERE: row condition -> boolean expression (recommended to do before LIMIT)\n", - " - boolean operators: AND, OR, NOT\n", - " - AND / OR: can be used to combine conditions\n", - "- LIMIT: simple limiation of number of rows\n", - "- GROUP BY: sorting\n", - "\n", - "## Today's lecture:\n", - "- aggregation: SUM, AVG, COUNT, MIN, MAX\n", - "- group by: equivalent to bucketization; one row can only be part of one bucket\n", - "- having: applying condition to groups" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<style>em { color: red; }</style>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# ignore this cell (it's just to make certain text red later, but you don't need to understand it).\n", - "from IPython.core.display import HTML\n", - "HTML('<style>em { color: red; }</style>')" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# import statements\n", - "import sqlite3\n", - "import pandas as pd\n", - "import os" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<sqlite3.Connection at 0x7f809104fa80>" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "movies_path = \"movies.db\"\n", - "assert os.path.exists(movies_path)\n", - "\n", - "c = sqlite3.connect(movies_path)\n", - "c" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>type</th>\n", - " <th>name</th>\n", - " <th>tbl_name</th>\n", - " <th>rootpage</th>\n", - " <th>sql</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>table</td>\n", - " <td>movies</td>\n", - " <td>movies</td>\n", - " <td>2</td>\n", - " <td>CREATE TABLE \"movies\" (\\n\"Title\" TEXT,\\n \"Dir...</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " type name tbl_name rootpage \\\n", - "0 table movies movies 2 \n", - "\n", - " sql \n", - "0 CREATE TABLE \"movies\" (\\n\"Title\" TEXT,\\n \"Dir... " - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pd.read_sql(\"select * from sqlite_master\", c)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>Director</th>\n", - " <th>Year</th>\n", - " <th>Runtime</th>\n", - " <th>Rating</th>\n", - " <th>Revenue</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Guardians of the Galaxy</td>\n", - " <td>James Gunn</td>\n", - " <td>2014</td>\n", - " <td>121</td>\n", - " <td>8.1</td>\n", - " <td>333.13</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Prometheus</td>\n", - " <td>Ridley Scott</td>\n", - " <td>2012</td>\n", - " <td>124</td>\n", - " <td>7.0</td>\n", - " <td>126.46</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Split</td>\n", - " <td>M. Night Shyamalan</td>\n", - " <td>2016</td>\n", - " <td>117</td>\n", - " <td>7.3</td>\n", - " <td>138.12</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Sing</td>\n", - " <td>Christophe Lourdelet</td>\n", - " <td>2016</td>\n", - " <td>108</td>\n", - " <td>7.2</td>\n", - " <td>270.32</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Suicide Squad</td>\n", - " <td>David Ayer</td>\n", - " <td>2016</td>\n", - " <td>123</td>\n", - " <td>6.2</td>\n", - " <td>325.02</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title Director Year Runtime Rating \\\n", - "0 Guardians of the Galaxy James Gunn 2014 121 8.1 \n", - "1 Prometheus Ridley Scott 2012 124 7.0 \n", - "2 Split M. Night Shyamalan 2016 117 7.3 \n", - "3 Sing Christophe Lourdelet 2016 108 7.2 \n", - "4 Suicide Squad David Ayer 2016 123 6.2 \n", - "\n", - " Revenue \n", - "0 333.13 \n", - "1 126.46 \n", - "2 138.12 \n", - "3 270.32 \n", - "4 325.02 " - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pd.read_sql(\"select * from movies\", c).head(5)" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [], - "source": [ - "def qry(sql, conn = c):\n", - " return pd.read_sql(sql, conn)" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>Director</th>\n", - " <th>Year</th>\n", - " <th>Runtime</th>\n", - " <th>Rating</th>\n", - " <th>Revenue</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Guardians of the Galaxy</td>\n", - " <td>James Gunn</td>\n", - " <td>2014</td>\n", - " <td>121</td>\n", - " <td>8.1</td>\n", - " <td>333.13</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Prometheus</td>\n", - " <td>Ridley Scott</td>\n", - " <td>2012</td>\n", - " <td>124</td>\n", - " <td>7.0</td>\n", - " <td>126.46</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Split</td>\n", - " <td>M. Night Shyamalan</td>\n", - " <td>2016</td>\n", - " <td>117</td>\n", - " <td>7.3</td>\n", - " <td>138.12</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Sing</td>\n", - " <td>Christophe Lourdelet</td>\n", - " <td>2016</td>\n", - " <td>108</td>\n", - " <td>7.2</td>\n", - " <td>270.32</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Suicide Squad</td>\n", - " <td>David Ayer</td>\n", - " <td>2016</td>\n", - " <td>123</td>\n", - " <td>6.2</td>\n", - " <td>325.02</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>993</th>\n", - " <td>Secret in Their Eyes</td>\n", - " <td>Billy Ray</td>\n", - " <td>2015</td>\n", - " <td>111</td>\n", - " <td>6.2</td>\n", - " <td>0.00</td>\n", - " </tr>\n", - " <tr>\n", - " <th>994</th>\n", - " <td>Hostel: Part II</td>\n", - " <td>Eli Roth</td>\n", - " <td>2007</td>\n", - " <td>94</td>\n", - " <td>5.5</td>\n", - " <td>17.54</td>\n", - " </tr>\n", - " <tr>\n", - " <th>995</th>\n", - " <td>Step Up 2: The Streets</td>\n", - " <td>Jon M. Chu</td>\n", - " <td>2008</td>\n", - " <td>98</td>\n", - " <td>6.2</td>\n", - " <td>58.01</td>\n", - " </tr>\n", - " <tr>\n", - " <th>996</th>\n", - " <td>Search Party</td>\n", - " <td>Scot Armstrong</td>\n", - " <td>2014</td>\n", - " <td>93</td>\n", - " <td>5.6</td>\n", - " <td>0.00</td>\n", - " </tr>\n", - " <tr>\n", - " <th>997</th>\n", - " <td>Nine Lives</td>\n", - " <td>Barry Sonnenfeld</td>\n", - " <td>2016</td>\n", - " <td>87</td>\n", - " <td>5.3</td>\n", - " <td>19.64</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>998 rows × 6 columns</p>\n", - "</div>" - ], - "text/plain": [ - " Title Director Year Runtime Rating \\\n", - "0 Guardians of the Galaxy James Gunn 2014 121 8.1 \n", - "1 Prometheus Ridley Scott 2012 124 7.0 \n", - "2 Split M. Night Shyamalan 2016 117 7.3 \n", - "3 Sing Christophe Lourdelet 2016 108 7.2 \n", - "4 Suicide Squad David Ayer 2016 123 6.2 \n", - ".. ... ... ... ... ... \n", - "993 Secret in Their Eyes Billy Ray 2015 111 6.2 \n", - "994 Hostel: Part II Eli Roth 2007 94 5.5 \n", - "995 Step Up 2: The Streets Jon M. Chu 2008 98 6.2 \n", - "996 Search Party Scot Armstrong 2014 93 5.6 \n", - "997 Nine Lives Barry Sonnenfeld 2016 87 5.3 \n", - "\n", - " Revenue \n", - "0 333.13 \n", - "1 126.46 \n", - "2 138.12 \n", - "3 270.32 \n", - "4 325.02 \n", - ".. ... \n", - "993 0.00 \n", - "994 17.54 \n", - "995 58.01 \n", - "996 0.00 \n", - "997 19.64 \n", - "\n", - "[998 rows x 6 columns]" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT *\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Review: Simple Selections" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *movie* has the *highest rating*?" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>Rating</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>The Dark Knight</td>\n", - " <td>9.0</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title Rating\n", - "0 The Dark Knight 9.0" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT Title, rating\n", - "FROM movies\n", - "ORDER BY Rating DESC\n", - "LIMIT 1\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *director* made the *shortest movie*?" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>Runtime</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Claude Barras</td>\n", - " <td>66</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director Runtime\n", - "0 Claude Barras 66" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, runtime\n", - "FROM movies\n", - "ORDER BY runtime\n", - "LIMIT 1\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *director* made the *highest-revenue movie*?" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>Revenue</th>\n", - " <th>Title</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>J.J. Abrams</td>\n", - " <td>936.63</td>\n", - " <td>Star Wars: Episode VII - The Force Awakens</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director Revenue Title\n", - "0 J.J. Abrams 936.63 Star Wars: Episode VII - The Force Awakens" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, revenue, title\n", - "FROM movies\n", - "ORDER BY revenue DESC\n", - "LIMIT 1\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *movie* had the *highest revenues* in *2016*?" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>Revenue</th>\n", - " <th>Year</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Rogue One</td>\n", - " <td>532.17</td>\n", - " <td>2016</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title Revenue Year\n", - "0 Rogue One 532.17 2016" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT title, revenue, year\n", - "FROM movies\n", - "WHERE year = 2016\n", - "ORDER BY revenue DESC\n", - "LIMIT 1\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *3 movies* had the *highest revenues* in *2016*?" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>Revenue</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Rogue One</td>\n", - " <td>532.17</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Finding Dory</td>\n", - " <td>486.29</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Captain America: Civil War</td>\n", - " <td>408.08</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title Revenue\n", - "0 Rogue One 532.17\n", - "1 Finding Dory 486.29\n", - "2 Captain America: Civil War 408.08" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT title, revenue\n", - "FROM movies\n", - "WHERE year = 2016\n", - "ORDER BY revenue DESC\n", - "LIMIT 3\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *3 movies* have the *highest rating-to-revenue ratios*?\n", - "\n", - "Introduce `AS`" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>ratio</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Wakefield</td>\n", - " <td>750.0</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Love, Rosie</td>\n", - " <td>720.0</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Lovesong</td>\n", - " <td>640.0</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title ratio\n", - "0 Wakefield 750.0\n", - "1 Love, Rosie 720.0\n", - "2 Lovesong 640.0" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT title, rating / revenue AS ratio\n", - "FROM movies\n", - "ORDER BY ratio DESC\n", - "LIMIT 3\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Aggregate Queries\n", - "\n", - "```\n", - "SUM, AVG, COUNT, MIN, MAX\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many *movies* are there?" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>COUNT(*)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>998</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " COUNT(*)\n", - "0 998" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT COUNT(*)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many *directors* are there?" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>COUNT(director)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>998</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " COUNT(director)\n", - "0 998" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# This doesn't feel correct - it counts duplicates for director names!\n", - "qry(\"\"\"\n", - "SELECT COUNT(director)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>COUNT(DISTINCT director)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>643</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " COUNT(DISTINCT director)\n", - "0 643" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT COUNT(DISTINCT director)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *total revenue* of *all the movies*?" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>SUM(revenue)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>72215.45</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " SUM(revenue)\n", - "0 72215.45" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT SUM(revenue)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average rating* across *all movies*?\n", - "\n", - "* v1: with `SUM` and `COUNT`\n", - "* v2: with `AVG`" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>SUM(rating) / COUNT(*)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>6.723447</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " SUM(rating) / COUNT(*)\n", - "0 6.723447" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# v1\n", - "qry(\"\"\"\n", - "SELECT SUM(rating) / COUNT(*)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>AVG(rating)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>6.723447</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " AVG(rating)\n", - "0 6.723447" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# v2\n", - "qry(\"\"\"\n", - "SELECT AVG(rating)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average revenue* and *average runtime* of *all the movies*?" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>AVG(revenue)</th>\n", - " <th>AVG(runtime)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>72.36017</td>\n", - " <td>113.170341</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " AVG(revenue) AVG(runtime)\n", - "0 72.36017 113.170341" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT AVG(revenue), AVG(runtime)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average runtime* for a *James Gunn* movie?" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>AVG(runtime)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>104.0</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " AVG(runtime)\n", - "0 104.0" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT AVG(runtime)\n", - "FROM movies\n", - "WHERE director = \"James Gunn\"\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average revenue* for a *Ridley Scott* movie?" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>AVG(revenue)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>89.8825</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " AVG(revenue)\n", - "0 89.8825" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT AVG(revenue)\n", - "FROM movies\n", - "WHERE director = \"Ridley Scott\"\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### *How many movies* were there in *2016*?" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>COUNT(*)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>296</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " COUNT(*)\n", - "0 296" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT COUNT(*)\n", - "FROM movies\n", - "WHERE year = 2016\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What *percentage* of the *total revenue* came from the *highest-revenue movie*?" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>percentage</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>1.296994</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " percentage\n", - "0 1.296994" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT MAX(revenue) / SUM(revenue) * 100 AS percentage\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>revenue / SUM(revenue) * 100</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>0.4613</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " revenue / SUM(revenue) * 100\n", - "0 0.4613" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT revenue / SUM(revenue) * 100\n", - "FROM movies\n", - "ORDER BY revenue DESC\n", - "LIMIT 1\n", - "\"\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>MAX(revenue)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>936.63</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " MAX(revenue)\n", - "0 936.63" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT MAX(revenue)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What *percentage* of the *revenue* came from the *highest-revenue movie* in *2016*?" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>percentage</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>4.746581</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " percentage\n", - "0 4.746581" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT MAX(revenue) / SUM(revenue) * 100 AS percentage\n", - "FROM movies\n", - "WHERE year = 2016\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Follow up question: *which movie* was this?" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>Director</th>\n", - " <th>Year</th>\n", - " <th>Runtime</th>\n", - " <th>Rating</th>\n", - " <th>Revenue</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Rogue One</td>\n", - " <td>Gareth Edwards</td>\n", - " <td>2016</td>\n", - " <td>133</td>\n", - " <td>7.9</td>\n", - " <td>532.17</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title Director Year Runtime Rating Revenue\n", - "0 Rogue One Gareth Edwards 2016 133 7.9 532.17" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT *\n", - "FROM movies\n", - "WHERE year = 2016\n", - "ORDER BY revenue DESC\n", - "LIMIT 1\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# GROUP BY Queries\n", - "\n", - "```sql\n", - "SELECT ???, ??? FROM Movies\n", - "GROUP BY ???\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *total revenue* per each *year*?\n", - "\n", - "* v1: the amounts\n", - "* v2: the amounts, as labeled by year" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>SUM(revenue)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>3624.46</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>4306.23</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>5053.22</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>5292.26</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>5989.65</td>\n", - " </tr>\n", - " <tr>\n", - " <th>5</th>\n", - " <td>5431.96</td>\n", - " </tr>\n", - " <tr>\n", - " <th>6</th>\n", - " <td>6910.29</td>\n", - " </tr>\n", - " <tr>\n", - " <th>7</th>\n", - " <td>7544.21</td>\n", - " </tr>\n", - " <tr>\n", - " <th>8</th>\n", - " <td>7997.40</td>\n", - " </tr>\n", - " <tr>\n", - " <th>9</th>\n", - " <td>8854.12</td>\n", - " </tr>\n", - " <tr>\n", - " <th>10</th>\n", - " <td>11211.65</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " SUM(revenue)\n", - "0 3624.46\n", - "1 4306.23\n", - "2 5053.22\n", - "3 5292.26\n", - "4 5989.65\n", - "5 5431.96\n", - "6 6910.29\n", - "7 7544.21\n", - "8 7997.40\n", - "9 8854.12\n", - "10 11211.65" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# v1\n", - "qry(\"\"\"\n", - "SELECT SUM(revenue)\n", - "FROM movies\n", - "GROUP BY year\n", - "\"\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Year</th>\n", - " <th>SUM(revenue)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>2006</td>\n", - " <td>3624.46</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>2007</td>\n", - " <td>4306.23</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>2008</td>\n", - " <td>5053.22</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>2009</td>\n", - " <td>5292.26</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>2010</td>\n", - " <td>5989.65</td>\n", - " </tr>\n", - " <tr>\n", - " <th>5</th>\n", - " <td>2011</td>\n", - " <td>5431.96</td>\n", - " </tr>\n", - " <tr>\n", - " <th>6</th>\n", - " <td>2012</td>\n", - " <td>6910.29</td>\n", - " </tr>\n", - " <tr>\n", - " <th>7</th>\n", - " <td>2013</td>\n", - " <td>7544.21</td>\n", - " </tr>\n", - " <tr>\n", - " <th>8</th>\n", - " <td>2014</td>\n", - " <td>7997.40</td>\n", - " </tr>\n", - " <tr>\n", - " <th>9</th>\n", - " <td>2015</td>\n", - " <td>8854.12</td>\n", - " </tr>\n", - " <tr>\n", - " <th>10</th>\n", - " <td>2016</td>\n", - " <td>11211.65</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Year SUM(revenue)\n", - "0 2006 3624.46\n", - "1 2007 4306.23\n", - "2 2008 5053.22\n", - "3 2009 5292.26\n", - "4 2010 5989.65\n", - "5 2011 5431.96\n", - "6 2012 6910.29\n", - "7 2013 7544.21\n", - "8 2014 7997.40\n", - "9 2015 8854.12\n", - "10 2016 11211.65" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# v2\n", - "qry(\"\"\"\n", - "SELECT year, SUM(revenue)\n", - "FROM movies\n", - "GROUP BY year\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### *How many movies* were by each *director*?" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>mov_count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Ridley Scott</td>\n", - " <td>8</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Paul W.S. Anderson</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Michael Bay</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>M. Night Shyamalan</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>David Yates</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>638</th>\n", - " <td>Aisling Walsh</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>639</th>\n", - " <td>Afonso Poyart</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>640</th>\n", - " <td>Adam Leon</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>641</th>\n", - " <td>Abdellatif Kechiche</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>642</th>\n", - " <td>Aamir Khan</td>\n", - " <td>1</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>643 rows × 2 columns</p>\n", - "</div>" - ], - "text/plain": [ - " Director mov_count\n", - "0 Ridley Scott 8\n", - "1 Paul W.S. Anderson 6\n", - "2 Michael Bay 6\n", - "3 M. Night Shyamalan 6\n", - "4 David Yates 6\n", - ".. ... ...\n", - "638 Aisling Walsh 1\n", - "639 Afonso Poyart 1\n", - "640 Adam Leon 1\n", - "641 Abdellatif Kechiche 1\n", - "642 Aamir Khan 1\n", - "\n", - "[643 rows x 2 columns]" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, COUNT(*) AS mov_count\n", - "FROM movies\n", - "GROUP BY director\n", - "ORDER BY mov_count DESC\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average rating* for each *director*?" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>AVG(rating)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Aamir Khan</td>\n", - " <td>8.50</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Abdellatif Kechiche</td>\n", - " <td>7.80</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Adam Leon</td>\n", - " <td>6.50</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Adam McKay</td>\n", - " <td>7.00</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Adam Shankman</td>\n", - " <td>6.30</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>638</th>\n", - " <td>Xavier Dolan</td>\n", - " <td>7.55</td>\n", - " </tr>\n", - " <tr>\n", - " <th>639</th>\n", - " <td>Yimou Zhang</td>\n", - " <td>6.10</td>\n", - " </tr>\n", - " <tr>\n", - " <th>640</th>\n", - " <td>Yorgos Lanthimos</td>\n", - " <td>7.20</td>\n", - " </tr>\n", - " <tr>\n", - " <th>641</th>\n", - " <td>Zack Snyder</td>\n", - " <td>7.04</td>\n", - " </tr>\n", - " <tr>\n", - " <th>642</th>\n", - " <td>Zackary Adler</td>\n", - " <td>5.10</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>643 rows × 2 columns</p>\n", - "</div>" - ], - "text/plain": [ - " Director AVG(rating)\n", - "0 Aamir Khan 8.50\n", - "1 Abdellatif Kechiche 7.80\n", - "2 Adam Leon 6.50\n", - "3 Adam McKay 7.00\n", - "4 Adam Shankman 6.30\n", - ".. ... ...\n", - "638 Xavier Dolan 7.55\n", - "639 Yimou Zhang 6.10\n", - "640 Yorgos Lanthimos 7.20\n", - "641 Zack Snyder 7.04\n", - "642 Zackary Adler 5.10\n", - "\n", - "[643 rows x 2 columns]" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, AVG(rating)\n", - "FROM movies\n", - "GROUP BY director\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average runtime* for each *director*?" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>AVG(runtime)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Aamir Khan</td>\n", - " <td>165.00</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Abdellatif Kechiche</td>\n", - " <td>180.00</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Adam Leon</td>\n", - " <td>82.00</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Adam McKay</td>\n", - " <td>110.75</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Adam Shankman</td>\n", - " <td>120.00</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>638</th>\n", - " <td>Xavier Dolan</td>\n", - " <td>118.00</td>\n", - " </tr>\n", - " <tr>\n", - " <th>639</th>\n", - " <td>Yimou Zhang</td>\n", - " <td>103.00</td>\n", - " </tr>\n", - " <tr>\n", - " <th>640</th>\n", - " <td>Yorgos Lanthimos</td>\n", - " <td>106.50</td>\n", - " </tr>\n", - " <tr>\n", - " <th>641</th>\n", - " <td>Zack Snyder</td>\n", - " <td>136.60</td>\n", - " </tr>\n", - " <tr>\n", - " <th>642</th>\n", - " <td>Zackary Adler</td>\n", - " <td>110.00</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>643 rows × 2 columns</p>\n", - "</div>" - ], - "text/plain": [ - " Director AVG(runtime)\n", - "0 Aamir Khan 165.00\n", - "1 Abdellatif Kechiche 180.00\n", - "2 Adam Leon 82.00\n", - "3 Adam McKay 110.75\n", - "4 Adam Shankman 120.00\n", - ".. ... ...\n", - "638 Xavier Dolan 118.00\n", - "639 Yimou Zhang 103.00\n", - "640 Yorgos Lanthimos 106.50\n", - "641 Zack Snyder 136.60\n", - "642 Zackary Adler 110.00\n", - "\n", - "[643 rows x 2 columns]" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, AVG(runtime)\n", - "FROM movies\n", - "GROUP BY director\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many *unique directors* created a movie in each *year*" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Year</th>\n", - " <th>director_count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>2006</td>\n", - " <td>44</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>2007</td>\n", - " <td>51</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>2008</td>\n", - " <td>51</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>2009</td>\n", - " <td>51</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>2010</td>\n", - " <td>60</td>\n", - " </tr>\n", - " <tr>\n", - " <th>5</th>\n", - " <td>2011</td>\n", - " <td>63</td>\n", - " </tr>\n", - " <tr>\n", - " <th>6</th>\n", - " <td>2012</td>\n", - " <td>64</td>\n", - " </tr>\n", - " <tr>\n", - " <th>7</th>\n", - " <td>2013</td>\n", - " <td>88</td>\n", - " </tr>\n", - " <tr>\n", - " <th>8</th>\n", - " <td>2014</td>\n", - " <td>97</td>\n", - " </tr>\n", - " <tr>\n", - " <th>9</th>\n", - " <td>2015</td>\n", - " <td>127</td>\n", - " </tr>\n", - " <tr>\n", - " <th>10</th>\n", - " <td>2016</td>\n", - " <td>289</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Year director_count\n", - "0 2006 44\n", - "1 2007 51\n", - "2 2008 51\n", - "3 2009 51\n", - "4 2010 60\n", - "5 2011 63\n", - "6 2012 64\n", - "7 2013 88\n", - "8 2014 97\n", - "9 2015 127\n", - "10 2016 289" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT year, COUNT(DISTINCT director) AS director_count\n", - "FROM movies\n", - "GROUP BY year\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Combining GROUP BY with other CLAUSES\n", - "\n", - "<img src=\"groupby.png\">" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *total revenue* of per *year*, in *recent* years?" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Year</th>\n", - " <th>total_revenue</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>2016</td>\n", - " <td>11211.65</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>2015</td>\n", - " <td>8854.12</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>2014</td>\n", - " <td>7997.40</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>2013</td>\n", - " <td>7544.21</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>2012</td>\n", - " <td>6910.29</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Year total_revenue\n", - "0 2016 11211.65\n", - "1 2015 8854.12\n", - "2 2014 7997.40\n", - "3 2013 7544.21\n", - "4 2012 6910.29" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# recent means 5 years\n", - "qry(\"\"\"\n", - "SELECT year, SUM(revenue) AS total_revenue\n", - "FROM movies\n", - "GROUP BY Year\n", - "ORDER BY Year DESC\n", - "LIMIT 5\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *directors* have had the *largest number of movies* earning *over 100M dollars*?" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>David Yates</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>J.J. Abrams</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Zack Snyder</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Ridley Scott</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Paul Feig</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>156</th>\n", - " <td>Alfonso Cuarón</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>157</th>\n", - " <td>Alessandro Carloni</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>158</th>\n", - " <td>Alejandro González Iñárritu</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>159</th>\n", - " <td>Alan Taylor</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>160</th>\n", - " <td>Adam Shankman</td>\n", - " <td>1</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>161 rows × 2 columns</p>\n", - "</div>" - ], - "text/plain": [ - " Director count\n", - "0 David Yates 6\n", - "1 J.J. Abrams 5\n", - "2 Zack Snyder 4\n", - "3 Ridley Scott 4\n", - "4 Paul Feig 4\n", - ".. ... ...\n", - "156 Alfonso Cuarón 1\n", - "157 Alessandro Carloni 1\n", - "158 Alejandro González Iñárritu 1\n", - "159 Alan Taylor 1\n", - "160 Adam Shankman 1\n", - "\n", - "[161 rows x 2 columns]" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, COUNT(title) AS count\n", - "FROM movies\n", - "WHERE revenue > 100\n", - "GROUP BY director\n", - "ORDER BY count DESC\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *three* of the *directors* have the *greatest average rating*?" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>avg_rating</th>\n", - " <th>count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Nitesh Tiwari</td>\n", - " <td>8.80</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Christopher Nolan</td>\n", - " <td>8.68</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Olivier Nakache</td>\n", - " <td>8.60</td>\n", - " <td>1</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director avg_rating count\n", - "0 Nitesh Tiwari 8.80 1\n", - "1 Christopher Nolan 8.68 5\n", - "2 Olivier Nakache 8.60 1" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, AVG(rating) AS avg_rating, COUNT(*) as count\n", - "FROM movies\n", - "GROUP BY director\n", - "ORDER BY avg_rating DESC\n", - "LIMIT 3\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Why is the above question maybe not the best to ask?" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "# We want to consider if the director has multiple great movies, instead of just one" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *three* of the *directors* have the *greatest average rating* over at *least three movies*?" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "# We cannot use where clause on aggregates because that data doesn't exist in the original table\n", - "# qry(\"\"\"\n", - "# SELECT director, AVG(rating) AS avg_rating, COUNT(*) as count\n", - "# FROM movies\n", - "# WHERE count >= 3\n", - "# GROUP BY director\n", - "# ORDER BY avg_rating DESC\n", - "# LIMIT 3\n", - "# \"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Need filtering BEFORE and AFTER the GROUP operations\n", - "\n", - "<img src=\"pipeline.png\">" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# WHERE vs. HAVING\n", - "\n", - "* WHERE: filter rows in original table\n", - "* HAVING: filter groups" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Repeat: Which *three* of the *directors* have the *greatest average rating* over at *least three movies*?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "<img src=\"having.png\">" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>avg_rating</th>\n", - " <th>count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Christopher Nolan</td>\n", - " <td>8.68</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Martin Scorsese</td>\n", - " <td>7.92</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Quentin Tarantino</td>\n", - " <td>7.90</td>\n", - " <td>4</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director avg_rating count\n", - "0 Christopher Nolan 8.68 5\n", - "1 Martin Scorsese 7.92 5\n", - "2 Quentin Tarantino 7.90 4" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# We cannot use where clause on aggregates because that data doesn't exist in the original table\n", - "qry(\"\"\"\n", - "SELECT director, AVG(rating) AS avg_rating, COUNT(*) as count\n", - "FROM movies\n", - "GROUP BY director\n", - "HAVING count >= 3\n", - "ORDER BY avg_rating DESC\n", - "LIMIT 3\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *directors* have had *more than 3 movies* that have been *since 2010*?" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Antoine Fuqua</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>David O. Russell</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>David Yates</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Denis Villeneuve</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>James Wan</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>5</th>\n", - " <td>M. Night Shyamalan</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>6</th>\n", - " <td>Martin Scorsese</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>7</th>\n", - " <td>Michael Bay</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>8</th>\n", - " <td>Mike Flanagan</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>9</th>\n", - " <td>Paul Feig</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>10</th>\n", - " <td>Paul W.S. Anderson</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>11</th>\n", - " <td>Peter Berg</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>12</th>\n", - " <td>Ridley Scott</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>13</th>\n", - " <td>Woody Allen</td>\n", - " <td>4</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director count\n", - "0 Antoine Fuqua 4\n", - "1 David O. Russell 4\n", - "2 David Yates 4\n", - "3 Denis Villeneuve 5\n", - "4 James Wan 4\n", - "5 M. Night Shyamalan 4\n", - "6 Martin Scorsese 4\n", - "7 Michael Bay 4\n", - "8 Mike Flanagan 4\n", - "9 Paul Feig 4\n", - "10 Paul W.S. Anderson 5\n", - "11 Peter Berg 4\n", - "12 Ridley Scott 5\n", - "13 Woody Allen 4" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, COUNT(title) AS count\n", - "FROM movies\n", - "WHERE year >= 2010\n", - "GROUP BY director\n", - "HAVING count > 3\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *directors* have had more than *three* movies with runtimes under *100* minutes" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Woody Allen</td>\n", - " <td>4</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director count\n", - "0 Woody Allen 4" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, COUNT(title) AS count\n", - "FROM movies\n", - "WHERE runtime < 100\n", - "GROUP BY director\n", - "HAVING count > 3\n", - "\"\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "# Don't forget to close the movies.db connection\n", - "c.close()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Practice: Survey data" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<sqlite3.Connection at 0x7f809104fd50>" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# open a connection to survey.db\n", - "survey_path = 'survey.db'\n", - "assert os.path.exists(survey_path)\n", - "\n", - "conn = sqlite3.connect(survey_path)\n", - "conn" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>type</th>\n", - " <th>name</th>\n", - " <th>tbl_name</th>\n", - " <th>rootpage</th>\n", - " <th>sql</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>table</td>\n", - " <td>fall_2021</td>\n", - " <td>fall_2021</td>\n", - " <td>2</td>\n", - " <td>CREATE TABLE \"fall_2021\" (\\n\"index\" INTEGER,\\n...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>index</td>\n", - " <td>ix_fall_2021_index</td>\n", - " <td>fall_2021</td>\n", - " <td>3</td>\n", - " <td>CREATE INDEX \"ix_fall_2021_index\"ON \"fall_2021...</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " type name tbl_name rootpage \\\n", - "0 table fall_2021 fall_2021 2 \n", - "1 index ix_fall_2021_index fall_2021 3 \n", - "\n", - " sql \n", - "0 CREATE TABLE \"fall_2021\" (\\n\"index\" INTEGER,\\n... \n", - "1 CREATE INDEX \"ix_fall_2021_index\"ON \"fall_2021... " - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "select *\n", - "from sqlite_master\n", - "\"\"\", conn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Take a peek at fall_2021 table data" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>index</th>\n", - " <th>lecture</th>\n", - " <th>age</th>\n", - " <th>major</th>\n", - " <th>topping</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>0</td>\n", - " <td>LEC001</td>\n", - " <td>19.0</td>\n", - " <td>Computer Science</td>\n", - " <td>basil/spinach</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>1</td>\n", - " <td>LEC002</td>\n", - " <td>18.0</td>\n", - " <td>Engineering</td>\n", - " <td>pineapple</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>2</td>\n", - " <td>LEC003</td>\n", - " <td>19.0</td>\n", - " <td>Business</td>\n", - " <td>pepperoni</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>3</td>\n", - " <td>LEC003</td>\n", - " <td>19.0</td>\n", - " <td>Engineering</td>\n", - " <td>Other</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>4</td>\n", - " <td>LEC001</td>\n", - " <td>19.0</td>\n", - " <td>Data Science</td>\n", - " <td>sausage</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>891</th>\n", - " <td>891</td>\n", - " <td>LEC001</td>\n", - " <td>19.0</td>\n", - " <td>Data Science</td>\n", - " <td>pepperoni</td>\n", - " </tr>\n", - " <tr>\n", - " <th>892</th>\n", - " <td>892</td>\n", - " <td>LEC001</td>\n", - " <td>20.0</td>\n", - " <td>Data Science</td>\n", - " <td>pepperoni</td>\n", - " </tr>\n", - " <tr>\n", - " <th>893</th>\n", - " <td>893</td>\n", - " <td>LEC004</td>\n", - " <td>21.0</td>\n", - " <td>Computer Science</td>\n", - " <td>pepperoni</td>\n", - " </tr>\n", - " <tr>\n", - " <th>894</th>\n", - " <td>894</td>\n", - " <td>LEC001</td>\n", - " <td>19.0</td>\n", - " <td>Engineering</td>\n", - " <td>tomato</td>\n", - " </tr>\n", - " <tr>\n", - " <th>895</th>\n", - " <td>895</td>\n", - " <td>LEC004</td>\n", - " <td>18.0</td>\n", - " <td>Engineering</td>\n", - " <td>pepperoni</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>896 rows × 5 columns</p>\n", - "</div>" - ], - "text/plain": [ - " index lecture age major topping\n", - "0 0 LEC001 19.0 Computer Science basil/spinach\n", - "1 1 LEC002 18.0 Engineering pineapple\n", - "2 2 LEC003 19.0 Business pepperoni\n", - "3 3 LEC003 19.0 Engineering Other\n", - "4 4 LEC001 19.0 Data Science sausage\n", - ".. ... ... ... ... ...\n", - "891 891 LEC001 19.0 Data Science pepperoni\n", - "892 892 LEC001 20.0 Data Science pepperoni\n", - "893 893 LEC004 21.0 Computer Science pepperoni\n", - "894 894 LEC001 19.0 Engineering tomato\n", - "895 895 LEC004 18.0 Engineering pepperoni\n", - "\n", - "[896 rows x 5 columns]" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "select *\n", - "from fall_2021\n", - "\"\"\", conn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many students in *LEC003* are graduating with *Engineering* major?" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>COUNT(*)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>88</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " COUNT(*)\n", - "0 88" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "select COUNT(*)\n", - "from fall_2021\n", - "where lecture = \"LEC003\" AND major = \"Engineering\"\n", - "\"\"\", conn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many students are in *each major*?\n", - "- bonus: sort based on majors, with most popular at the top" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>major</th>\n", - " <th>major_count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Engineering</td>\n", - " <td>328</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Data Science</td>\n", - " <td>178</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Computer Science</td>\n", - " <td>151</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Business</td>\n", - " <td>93</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Natural Science</td>\n", - " <td>52</td>\n", - " </tr>\n", - " <tr>\n", - " <th>5</th>\n", - " <td>Social Science</td>\n", - " <td>24</td>\n", - " </tr>\n", - " <tr>\n", - " <th>6</th>\n", - " <td>Statistics</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>7</th>\n", - " <td>Economics</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>8</th>\n", - " <td>undecided</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>9</th>\n", - " <td>Mathematics</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>10</th>\n", - " <td>Undecided</td>\n", - " <td>3</td>\n", - " </tr>\n", - " <tr>\n", - " <th>11</th>\n", - " <td>Math</td>\n", - " <td>3</td>\n", - " </tr>\n", - " <tr>\n", - " <th>12</th>\n", - " <td>statistics</td>\n", - " <td>2</td>\n", - " </tr>\n", - " <tr>\n", - " <th>13</th>\n", - " <td>math</td>\n", - " <td>2</td>\n", - " </tr>\n", - " <tr>\n", - " <th>14</th>\n", - " <td>economics</td>\n", - " <td>2</td>\n", - " </tr>\n", - " <tr>\n", - " <th>15</th>\n", - " <td>Information Systems</td>\n", - " <td>2</td>\n", - " </tr>\n", - " <tr>\n", - " <th>16</th>\n", - " <td>Biomedical Engineering</td>\n", - " <td>2</td>\n", - " </tr>\n", - " <tr>\n", - " <th>17</th>\n", - " <td>AMEP</td>\n", - " <td>2</td>\n", - " </tr>\n", - " <tr>\n", - " <th>18</th>\n", - " <td>undecided/maybe data science</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>19</th>\n", - " <td>not sure yet but maybe biology</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>20</th>\n", - " <td>mathematics</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>21</th>\n", - " <td>journalism</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>22</th>\n", - " <td>communication arts</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>23</th>\n", - " <td>chemistry</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>24</th>\n", - " <td>biology</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>25</th>\n", - " <td>atmospheric and oceanic science</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>26</th>\n", - " <td>animal science</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>27</th>\n", - " <td>STATS</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>28</th>\n", - " <td>Public Policy</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>29</th>\n", - " <td>Psychology/ Pre-law</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>30</th>\n", - " <td>Psychology</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>31</th>\n", - " <td>Neurobio and Econ</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>32</th>\n", - " <td>Meteorology or Oceanography</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>33</th>\n", - " <td>Mechanical Engineering</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>34</th>\n", - " <td>Math and Statistics</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>35</th>\n", - " <td>Marketing and Information Systems</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>36</th>\n", - " <td>Human Development and Communications</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>37</th>\n", - " <td>Geography/GIS</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>38</th>\n", - " <td>Geographic Information Systems</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>39</th>\n", - " <td>Genetics</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>40</th>\n", - " <td>Environmental Sciences</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>41</th>\n", - " <td>English and Journalism</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>42</th>\n", - " <td>English Literature</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>43</th>\n", - " <td>Economics with math emphasis</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>44</th>\n", - " <td>Economics with a data science certificate</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>45</th>\n", - " <td>Economics w/ Math Emphasis</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>46</th>\n", - " <td>Biochem</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>47</th>\n", - " <td>Applied Math Economics</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>48</th>\n", - " <td>Applied Math</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>49</th>\n", - " <td>Agricultural and Applied Economics</td>\n", - " <td>1</td>\n", - " </tr>\n", - " <tr>\n", - " <th>50</th>\n", - " <td>Accounting</td>\n", - " <td>1</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " major major_count\n", - "0 Engineering 328\n", - "1 Data Science 178\n", - "2 Computer Science 151\n", - "3 Business 93\n", - "4 Natural Science 52\n", - "5 Social Science 24\n", - "6 Statistics 6\n", - "7 Economics 5\n", - "8 undecided 4\n", - "9 Mathematics 4\n", - "10 Undecided 3\n", - "11 Math 3\n", - "12 statistics 2\n", - "13 math 2\n", - "14 economics 2\n", - "15 Information Systems 2\n", - "16 Biomedical Engineering 2\n", - "17 AMEP 2\n", - "18 undecided/maybe data science 1\n", - "19 not sure yet but maybe biology 1\n", - "20 mathematics 1\n", - "21 journalism 1\n", - "22 communication arts 1\n", - "23 chemistry 1\n", - "24 biology 1\n", - "25 atmospheric and oceanic science 1\n", - "26 animal science 1\n", - "27 STATS 1\n", - "28 Public Policy 1\n", - "29 Psychology/ Pre-law 1\n", - "30 Psychology 1\n", - "31 Neurobio and Econ 1\n", - "32 Meteorology or Oceanography 1\n", - "33 Mechanical Engineering 1\n", - "34 Math and Statistics 1\n", - "35 Marketing and Information Systems 1\n", - "36 Human Development and Communications 1\n", - "37 Geography/GIS 1\n", - "38 Geographic Information Systems 1\n", - "39 Genetics 1\n", - "40 Environmental Sciences 1\n", - "41 English and Journalism 1\n", - "42 English Literature 1\n", - "43 Economics with math emphasis 1\n", - "44 Economics with a data science certificate 1\n", - "45 Economics w/ Math Emphasis 1\n", - "46 Biochem 1\n", - "47 Applied Math Economics 1\n", - "48 Applied Math 1\n", - "49 Agricultural and Applied Economics 1\n", - "50 Accounting 1" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "select major, count(*) as major_count\n", - "from fall_2021\n", - "group by major\n", - "order by major_count DESC\n", - "\"\"\", conn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What are the *top 5 popular majors*?" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>major</th>\n", - " <th>major_count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Engineering</td>\n", - " <td>328</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Data Science</td>\n", - " <td>178</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Computer Science</td>\n", - " <td>151</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Business</td>\n", - " <td>93</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Natural Science</td>\n", - " <td>52</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " major major_count\n", - "0 Engineering 328\n", - "1 Data Science 178\n", - "2 Computer Science 151\n", - "3 Business 93\n", - "4 Natural Science 52" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "select major, count(*) as major_count\n", - "from fall_2021\n", - "group by major\n", - "order by major_count DESC\n", - "LIMIT 5\n", - "\"\"\", conn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average age* for *each major* with *at least 10 people*?\n", - "- bonus: sort based on popular major" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>major</th>\n", - " <th>major_count</th>\n", - " <th>average_age</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Engineering</td>\n", - " <td>328</td>\n", - " <td>19.418462</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Data Science</td>\n", - " <td>178</td>\n", - " <td>19.811429</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Computer Science</td>\n", - " <td>151</td>\n", - " <td>19.693878</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Business</td>\n", - " <td>93</td>\n", - " <td>19.673913</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Natural Science</td>\n", - " <td>52</td>\n", - " <td>21.078431</td>\n", - " </tr>\n", - " <tr>\n", - " <th>5</th>\n", - " <td>Social Science</td>\n", - " <td>24</td>\n", - " <td>19.695652</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " major major_count average_age\n", - "0 Engineering 328 19.418462\n", - "1 Data Science 178 19.811429\n", - "2 Computer Science 151 19.693878\n", - "3 Business 93 19.673913\n", - "4 Natural Science 52 21.078431\n", - "5 Social Science 24 19.695652" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "select major, count(*) as major_count, AVG(age) as average_age\n", - "from fall_2021\n", - "group by major\n", - "having major_count > 10\n", - "order by major_count DESC\n", - "\"\"\", conn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many *CS or DS majors* are in *each lecture*?" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>lecture</th>\n", - " <th>lecture_count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>LEC001</td>\n", - " <td>108</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>LEC002</td>\n", - " <td>58</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>LEC003</td>\n", - " <td>49</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>LEC004</td>\n", - " <td>62</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>LEC005</td>\n", - " <td>52</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " lecture lecture_count\n", - "0 LEC001 108\n", - "1 LEC002 58\n", - "2 LEC003 49\n", - "3 LEC004 62\n", - "4 LEC005 52" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "select lecture, count(*) as lecture_count\n", - "from fall_2021\n", - "where major = \"Computer Science\" OR major = \"Data Science\"\n", - "group by lecture\n", - "\"\"\", conn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What are the *top 10 pizza toppings*?" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>topping</th>\n", - " <th>topping_count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>pepperoni</td>\n", - " <td>261</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>sausage</td>\n", - " <td>190</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>pineapple</td>\n", - " <td>93</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>mushroom</td>\n", - " <td>78</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>none (just cheese)</td>\n", - " <td>75</td>\n", - " </tr>\n", - " <tr>\n", - " <th>5</th>\n", - " <td>basil/spinach</td>\n", - " <td>60</td>\n", - " </tr>\n", - " <tr>\n", - " <th>6</th>\n", - " <td>Other</td>\n", - " <td>57</td>\n", - " </tr>\n", - " <tr>\n", - " <th>7</th>\n", - " <td>macaroni/pasta</td>\n", - " <td>40</td>\n", - " </tr>\n", - " <tr>\n", - " <th>8</th>\n", - " <td>tomato</td>\n", - " <td>26</td>\n", - " </tr>\n", - " <tr>\n", - " <th>9</th>\n", - " <td>green pepper</td>\n", - " <td>16</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " topping topping_count\n", - "0 pepperoni 261\n", - "1 sausage 190\n", - "2 pineapple 93\n", - "3 mushroom 78\n", - "4 none (just cheese) 75\n", - "5 basil/spinach 60\n", - "6 Other 57\n", - "7 macaroni/pasta 40\n", - "8 tomato 26\n", - "9 green pepper 16" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "select topping, count(*) as topping_count\n", - "from fall_2021\n", - "group by topping\n", - "order by topping_count DESC\n", - "LIMIT 10\n", - "\"\"\", conn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which 2 lectures like pineapple the most?" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>lecture</th>\n", - " <th>lecture_count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>LEC001</td>\n", - " <td>29</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>LEC004</td>\n", - " <td>20</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " lecture lecture_count\n", - "0 LEC001 29\n", - "1 LEC004 20" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "select lecture, count(*) as lecture_count\n", - "from fall_2021\n", - "where topping = \"pineapple\"\n", - "group by lecture\n", - "order by lecture_count DESC\n", - "LIMIT 2\n", - "\"\"\", conn)" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [], - "source": [ - "c.close()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/lec_33_database2-checkpoint.ipynb b/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/lec_33_database2-checkpoint.ipynb deleted file mode 100644 index 52e3a93..0000000 --- a/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/lec_33_database2-checkpoint.ipynb +++ /dev/null @@ -1,3164 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## ignore this cell (it's just to make certain text red later, but you don't need to understand it).\n", - "from IPython.core.display import HTML\n", - "HTML('<style>em { color: red; }</style>')" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# import statements\n", - "import sqlite3\n", - "import pandas as pd\n", - "import os" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Warmup: SQL query clauses\n", - "**Mandatory SQL clauses**\n", - "- SELECT: column, column, ... or *\n", - "- FROM: table\n", - "\n", - "**Optional SQL clauses**\n", - "- WHERE: boolean expression (if row has ....)\n", - " - can use AND, OR, NOT\n", - "- ORDER BY column (ASC, DESC)\n", - "- LIMIT: num rows" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# open up the movies database\n", - "movies_path = \"movies.db\"\n", - "assert os.path.exists(movies_path)\n", - "c = sqlite3.connect(movies_path)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>type</th>\n", - " <th>name</th>\n", - " <th>tbl_name</th>\n", - " <th>rootpage</th>\n", - " <th>sql</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>table</td>\n", - " <td>movies</td>\n", - " <td>movies</td>\n", - " <td>2</td>\n", - " <td>CREATE TABLE \"movies\" (\\n\"Title\" TEXT,\\n \"Gen...</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " type name tbl_name rootpage \\\n", - "0 table movies movies 2 \n", - "\n", - " sql \n", - "0 CREATE TABLE \"movies\" (\\n\"Title\" TEXT,\\n \"Gen... " - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# what are the table names?\n", - "df = pd.read_sql(\"select * from sqlite_master where type='table'\", c)\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE TABLE \"movies\" (\n", - "\"Title\" TEXT,\n", - " \"Genre\" TEXT,\n", - " \"Director\" TEXT,\n", - " \"Cast\" TEXT,\n", - " \"Year\" INTEGER,\n", - " \"Runtime\" INTEGER,\n", - " \"Rating\" REAL,\n", - " \"Revenue\" REAL\n", - ")\n" - ] - } - ], - "source": [ - "# what are the data types?\n", - "print(df[\"sql\"].iloc[0])" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>Genre</th>\n", - " <th>Director</th>\n", - " <th>Cast</th>\n", - " <th>Year</th>\n", - " <th>Runtime</th>\n", - " <th>Rating</th>\n", - " <th>Revenue</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Guardians of the Galaxy</td>\n", - " <td>Action,Adventure,Sci-Fi</td>\n", - " <td>James Gunn</td>\n", - " <td>Chris Pratt, Vin Diesel, Bradley Cooper, Zoe S...</td>\n", - " <td>2014</td>\n", - " <td>121</td>\n", - " <td>8.1</td>\n", - " <td>333.13</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Prometheus</td>\n", - " <td>Adventure,Mystery,Sci-Fi</td>\n", - " <td>Ridley Scott</td>\n", - " <td>Noomi Rapace, Logan Marshall-Green, Michael ...</td>\n", - " <td>2012</td>\n", - " <td>124</td>\n", - " <td>7.0</td>\n", - " <td>126.46</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Split</td>\n", - " <td>Horror,Thriller</td>\n", - " <td>M. Night Shyamalan</td>\n", - " <td>James McAvoy, Anya Taylor-Joy, Haley Lu Richar...</td>\n", - " <td>2016</td>\n", - " <td>117</td>\n", - " <td>7.3</td>\n", - " <td>138.12</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Sing</td>\n", - " <td>Animation,Comedy,Family</td>\n", - " <td>Christophe Lourdelet</td>\n", - " <td>Matthew McConaughey,Reese Witherspoon, Seth Ma...</td>\n", - " <td>2016</td>\n", - " <td>108</td>\n", - " <td>7.2</td>\n", - " <td>270.32</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Suicide Squad</td>\n", - " <td>Action,Adventure,Fantasy</td>\n", - " <td>David Ayer</td>\n", - " <td>Will Smith, Jared Leto, Margot Robbie, Viola D...</td>\n", - " <td>2016</td>\n", - " <td>123</td>\n", - " <td>6.2</td>\n", - " <td>325.02</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1063</th>\n", - " <td>Guardians of the Galaxy Vol. 2</td>\n", - " <td>Action, Adventure, Comedy</td>\n", - " <td>James Gunn</td>\n", - " <td>Chris Pratt, Zoe Saldana, Dave Bautista, Vin D...</td>\n", - " <td>2017</td>\n", - " <td>136</td>\n", - " <td>7.6</td>\n", - " <td>389.81</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1064</th>\n", - " <td>Baby Driver</td>\n", - " <td>Action, Crime, Drama</td>\n", - " <td>Edgar Wright</td>\n", - " <td>Ansel Elgort, Jon Bernthal, Jon Hamm, Eiza Gon...</td>\n", - " <td>2017</td>\n", - " <td>113</td>\n", - " <td>7.6</td>\n", - " <td>107.83</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1065</th>\n", - " <td>Only the Brave</td>\n", - " <td>Action, Biography, Drama</td>\n", - " <td>Joseph Kosinski</td>\n", - " <td>Josh Brolin, Miles Teller, Jeff Bridges, Jenni...</td>\n", - " <td>2017</td>\n", - " <td>134</td>\n", - " <td>7.6</td>\n", - " <td>18.34</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1066</th>\n", - " <td>Incredibles 2</td>\n", - " <td>Animation, Action, Adventure</td>\n", - " <td>Brad Bird</td>\n", - " <td>Craig T. Nelson, Holly Hunter, Sarah Vowell, H...</td>\n", - " <td>2018</td>\n", - " <td>118</td>\n", - " <td>7.6</td>\n", - " <td>608.58</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1067</th>\n", - " <td>A Star Is Born</td>\n", - " <td>Drama, Music, Romance</td>\n", - " <td>Bradley Cooper</td>\n", - " <td>Lady Gaga, Bradley Cooper, Sam Elliott, Greg G...</td>\n", - " <td>2018</td>\n", - " <td>136</td>\n", - " <td>7.6</td>\n", - " <td>215.29</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>1068 rows × 8 columns</p>\n", - "</div>" - ], - "text/plain": [ - " Title Genre \\\n", - "0 Guardians of the Galaxy Action,Adventure,Sci-Fi \n", - "1 Prometheus Adventure,Mystery,Sci-Fi \n", - "2 Split Horror,Thriller \n", - "3 Sing Animation,Comedy,Family \n", - "4 Suicide Squad Action,Adventure,Fantasy \n", - "... ... ... \n", - "1063 Guardians of the Galaxy Vol. 2 Action, Adventure, Comedy \n", - "1064 Baby Driver Action, Crime, Drama \n", - "1065 Only the Brave Action, Biography, Drama \n", - "1066 Incredibles 2 Animation, Action, Adventure \n", - "1067 A Star Is Born Drama, Music, Romance \n", - "\n", - " Director Cast \\\n", - "0 James Gunn Chris Pratt, Vin Diesel, Bradley Cooper, Zoe S... \n", - "1 Ridley Scott Noomi Rapace, Logan Marshall-Green, Michael ... \n", - "2 M. Night Shyamalan James McAvoy, Anya Taylor-Joy, Haley Lu Richar... \n", - "3 Christophe Lourdelet Matthew McConaughey,Reese Witherspoon, Seth Ma... \n", - "4 David Ayer Will Smith, Jared Leto, Margot Robbie, Viola D... \n", - "... ... ... \n", - "1063 James Gunn Chris Pratt, Zoe Saldana, Dave Bautista, Vin D... \n", - "1064 Edgar Wright Ansel Elgort, Jon Bernthal, Jon Hamm, Eiza Gon... \n", - "1065 Joseph Kosinski Josh Brolin, Miles Teller, Jeff Bridges, Jenni... \n", - "1066 Brad Bird Craig T. Nelson, Holly Hunter, Sarah Vowell, H... \n", - "1067 Bradley Cooper Lady Gaga, Bradley Cooper, Sam Elliott, Greg G... \n", - "\n", - " Year Runtime Rating Revenue \n", - "0 2014 121 8.1 333.13 \n", - "1 2012 124 7.0 126.46 \n", - "2 2016 117 7.3 138.12 \n", - "3 2016 108 7.2 270.32 \n", - "4 2016 123 6.2 325.02 \n", - "... ... ... ... ... \n", - "1063 2017 136 7.6 389.81 \n", - "1064 2017 113 7.6 107.83 \n", - "1065 2017 134 7.6 18.34 \n", - "1066 2018 118 7.6 608.58 \n", - "1067 2018 136 7.6 215.29 \n", - "\n", - "[1068 rows x 8 columns]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# what is all our data?\n", - "pd.read_sql(\"select * from movies\", c)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# this function allows to type less for each query\n", - "def qry(sql, conn = c):\n", - " return pd.read_sql(sql, conn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Sample query format:\n", - "\n", - "```\n", - "SELECT\n", - "FROM movies\n", - "WHERE\n", - "ORDER BY\n", - "LIMIT\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>Genre</th>\n", - " <th>Director</th>\n", - " <th>Cast</th>\n", - " <th>Year</th>\n", - " <th>Runtime</th>\n", - " <th>Rating</th>\n", - " <th>Revenue</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Guardians of the Galaxy</td>\n", - " <td>Action,Adventure,Sci-Fi</td>\n", - " <td>James Gunn</td>\n", - " <td>Chris Pratt, Vin Diesel, Bradley Cooper, Zoe S...</td>\n", - " <td>2014</td>\n", - " <td>121</td>\n", - " <td>8.1</td>\n", - " <td>333.13</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Prometheus</td>\n", - " <td>Adventure,Mystery,Sci-Fi</td>\n", - " <td>Ridley Scott</td>\n", - " <td>Noomi Rapace, Logan Marshall-Green, Michael ...</td>\n", - " <td>2012</td>\n", - " <td>124</td>\n", - " <td>7.0</td>\n", - " <td>126.46</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Split</td>\n", - " <td>Horror,Thriller</td>\n", - " <td>M. Night Shyamalan</td>\n", - " <td>James McAvoy, Anya Taylor-Joy, Haley Lu Richar...</td>\n", - " <td>2016</td>\n", - " <td>117</td>\n", - " <td>7.3</td>\n", - " <td>138.12</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Sing</td>\n", - " <td>Animation,Comedy,Family</td>\n", - " <td>Christophe Lourdelet</td>\n", - " <td>Matthew McConaughey,Reese Witherspoon, Seth Ma...</td>\n", - " <td>2016</td>\n", - " <td>108</td>\n", - " <td>7.2</td>\n", - " <td>270.32</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Suicide Squad</td>\n", - " <td>Action,Adventure,Fantasy</td>\n", - " <td>David Ayer</td>\n", - " <td>Will Smith, Jared Leto, Margot Robbie, Viola D...</td>\n", - " <td>2016</td>\n", - " <td>123</td>\n", - " <td>6.2</td>\n", - " <td>325.02</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1063</th>\n", - " <td>Guardians of the Galaxy Vol. 2</td>\n", - " <td>Action, Adventure, Comedy</td>\n", - " <td>James Gunn</td>\n", - " <td>Chris Pratt, Zoe Saldana, Dave Bautista, Vin D...</td>\n", - " <td>2017</td>\n", - " <td>136</td>\n", - " <td>7.6</td>\n", - " <td>389.81</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1064</th>\n", - " <td>Baby Driver</td>\n", - " <td>Action, Crime, Drama</td>\n", - " <td>Edgar Wright</td>\n", - " <td>Ansel Elgort, Jon Bernthal, Jon Hamm, Eiza Gon...</td>\n", - " <td>2017</td>\n", - " <td>113</td>\n", - " <td>7.6</td>\n", - " <td>107.83</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1065</th>\n", - " <td>Only the Brave</td>\n", - " <td>Action, Biography, Drama</td>\n", - " <td>Joseph Kosinski</td>\n", - " <td>Josh Brolin, Miles Teller, Jeff Bridges, Jenni...</td>\n", - " <td>2017</td>\n", - " <td>134</td>\n", - " <td>7.6</td>\n", - " <td>18.34</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1066</th>\n", - " <td>Incredibles 2</td>\n", - " <td>Animation, Action, Adventure</td>\n", - " <td>Brad Bird</td>\n", - " <td>Craig T. Nelson, Holly Hunter, Sarah Vowell, H...</td>\n", - " <td>2018</td>\n", - " <td>118</td>\n", - " <td>7.6</td>\n", - " <td>608.58</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1067</th>\n", - " <td>A Star Is Born</td>\n", - " <td>Drama, Music, Romance</td>\n", - " <td>Bradley Cooper</td>\n", - " <td>Lady Gaga, Bradley Cooper, Sam Elliott, Greg G...</td>\n", - " <td>2018</td>\n", - " <td>136</td>\n", - " <td>7.6</td>\n", - " <td>215.29</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>1068 rows × 8 columns</p>\n", - "</div>" - ], - "text/plain": [ - " Title Genre \\\n", - "0 Guardians of the Galaxy Action,Adventure,Sci-Fi \n", - "1 Prometheus Adventure,Mystery,Sci-Fi \n", - "2 Split Horror,Thriller \n", - "3 Sing Animation,Comedy,Family \n", - "4 Suicide Squad Action,Adventure,Fantasy \n", - "... ... ... \n", - "1063 Guardians of the Galaxy Vol. 2 Action, Adventure, Comedy \n", - "1064 Baby Driver Action, Crime, Drama \n", - "1065 Only the Brave Action, Biography, Drama \n", - "1066 Incredibles 2 Animation, Action, Adventure \n", - "1067 A Star Is Born Drama, Music, Romance \n", - "\n", - " Director Cast \\\n", - "0 James Gunn Chris Pratt, Vin Diesel, Bradley Cooper, Zoe S... \n", - "1 Ridley Scott Noomi Rapace, Logan Marshall-Green, Michael ... \n", - "2 M. Night Shyamalan James McAvoy, Anya Taylor-Joy, Haley Lu Richar... \n", - "3 Christophe Lourdelet Matthew McConaughey,Reese Witherspoon, Seth Ma... \n", - "4 David Ayer Will Smith, Jared Leto, Margot Robbie, Viola D... \n", - "... ... ... \n", - "1063 James Gunn Chris Pratt, Zoe Saldana, Dave Bautista, Vin D... \n", - "1064 Edgar Wright Ansel Elgort, Jon Bernthal, Jon Hamm, Eiza Gon... \n", - "1065 Joseph Kosinski Josh Brolin, Miles Teller, Jeff Bridges, Jenni... \n", - "1066 Brad Bird Craig T. Nelson, Holly Hunter, Sarah Vowell, H... \n", - "1067 Bradley Cooper Lady Gaga, Bradley Cooper, Sam Elliott, Greg G... \n", - "\n", - " Year Runtime Rating Revenue \n", - "0 2014 121 8.1 333.13 \n", - "1 2012 124 7.0 126.46 \n", - "2 2016 117 7.3 138.12 \n", - "3 2016 108 7.2 270.32 \n", - "4 2016 123 6.2 325.02 \n", - "... ... ... ... ... \n", - "1063 2017 136 7.6 389.81 \n", - "1064 2017 113 7.6 107.83 \n", - "1065 2017 134 7.6 18.34 \n", - "1066 2018 118 7.6 608.58 \n", - "1067 2018 136 7.6 215.29 \n", - "\n", - "[1068 rows x 8 columns]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# call qry ....copy/paste the query from above\n", - "qry(\"\"\"\n", - "SELECT *\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What's the *Title* of the movie with the highest *Rating*?" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>Rating</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>The Dark Knight</td>\n", - " <td>9.0</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title Rating\n", - "0 The Dark Knight 9.0" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = qry(\"\"\"\n", - "SELECT Title, Rating\n", - "FROM movies\n", - "ORDER BY Rating DESC\n", - "LIMIT 1\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'The Dark Knight'" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.iloc[0][\"Title\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *Director* made the movie with the shortest *Runtime*?" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>Runtime</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Claude Barras</td>\n", - " <td>66</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director Runtime\n", - "0 Claude Barras 66" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = qry(\"\"\"\n", - "SELECT Director, Runtime\n", - "FROM movies\n", - "ORDER BY Runtime\n", - "LIMIT 1\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Claude Barras'" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.iloc[0][\"Director\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What was the *Director* and *Title* of the movie with the largest *Revenue*?" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>Revenue</th>\n", - " <th>Title</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>J.J. Abrams</td>\n", - " <td>936.63</td>\n", - " <td>Star Wars: Episode VII - The Force Awakens</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director Revenue Title\n", - "0 J.J. Abrams 936.63 Star Wars: Episode VII - The Force Awakens" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, revenue, title\n", - "FROM movies\n", - "ORDER BY revenue DESC\n", - "LIMIT 1\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *Title* of the movie with the highest *Revenue* in *Year* 2016?" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>Revenue</th>\n", - " <th>Year</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Rogue One</td>\n", - " <td>532.17</td>\n", - " <td>2016</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title Revenue Year\n", - "0 Rogue One 532.17 2016" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = qry(\"\"\"\n", - "SELECT title, revenue, year\n", - "FROM movies\n", - "WHERE year = 2016\n", - "ORDER BY revenue DESC\n", - "LIMIT 1\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Rogue One'" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.iloc[0][\"Title\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *3 movies* had the highest *Revenue* in the *Year* 2016?" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>Revenue</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Rogue One</td>\n", - " <td>532.17</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Finding Dory</td>\n", - " <td>486.29</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Captain America: Civil War</td>\n", - " <td>408.08</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title Revenue\n", - "0 Rogue One 532.17\n", - "1 Finding Dory 486.29\n", - "2 Captain America: Civil War 408.08" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = qry(\"\"\"\n", - "SELECT title, revenue\n", - "FROM movies\n", - "WHERE year = 2016\n", - "ORDER BY revenue DESC\n", - "LIMIT 3\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[532.17, 486.29, 408.08]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Extract revenue column and convert to list\n", - "list(df[\"Revenue\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Lecture 33: Database 2\n", - "Learning Objectives:\n", - "- Use the AS command to rename a column or a calculation\n", - "- Use SQL Aggregate functions to summarize database columns: \n", - " - SUM, AVG, COUNT, MIN, MAX, DISTINCT\n", - "- Use the GROUP BY command to place database rows into buckets.\n", - "- Use the HAVING command to apply conditions to groups." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *3 movies* have the highest *rating-to-revenue ratios*?\n", - "\n", - "The `AS` clause lets us rename a column or a calcuation" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>ratio</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Wakefield</td>\n", - " <td>750.0</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Love, Rosie</td>\n", - " <td>720.0</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Lovesong</td>\n", - " <td>640.0</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title ratio\n", - "0 Wakefield 750.0\n", - "1 Love, Rosie 720.0\n", - "2 Lovesong 640.0" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT title, rating / revenue AS ratio\n", - "FROM movies\n", - "ORDER BY ratio DESC\n", - "LIMIT 3\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Aggregate Queries\n", - "\n", - "```\n", - "SUM, AVG, COUNT, MIN, MAX, DISTINCT\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many *rows of movies* are there?\n", - "Note: when we want to count the number of rows, we use COUNT(*)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>COUNT(*)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>1068</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " COUNT(*)\n", - "0 1068" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT COUNT(*)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many *directors* are there?" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>COUNT(director)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>1068</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " COUNT(director)\n", - "0 1068" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# This doesn't feel correct - it counts duplicates for director names!\n", - "qry(\"\"\"\n", - "SELECT COUNT(director)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Use COUNT(DISTINCT columname) " - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>COUNT(DISTINCT director)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>679</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " COUNT(DISTINCT director)\n", - "0 679" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT COUNT(DISTINCT director)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the total *Revenue* of *all the movies*?" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>SUM(revenue)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>80668.27</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " SUM(revenue)\n", - "0 80668.27" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT SUM(revenue)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average rating* across *all movies*?\n", - "\n", - "* v1: with `SUM` and `COUNT`\n", - "* v2: with `AVG`" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>SUM(rating) / COUNT(*)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>6.805431</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " SUM(rating) / COUNT(*)\n", - "0 6.805431" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# v1\n", - "df = qry(\"\"\"\n", - "SELECT SUM(rating) / COUNT(*)\n", - "FROM movies\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "6.805430711610491" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.iloc[0][0]" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>AVG(rating)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>6.805431</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " AVG(rating)\n", - "0 6.805431" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# v2\n", - "qry(\"\"\"\n", - "SELECT AVG(rating)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average revenue* and *average runtime* of *all the movies*?" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>AVG(revenue)</th>\n", - " <th>AVG(runtime)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>75.532088</td>\n", - " <td>114.093633</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " AVG(revenue) AVG(runtime)\n", - "0 75.532088 114.093633" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT AVG(revenue), AVG(runtime)\n", - "FROM movies\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average revenue* for a *Ridley Scott* movie?" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>AVG(revenue)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>89.8825</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " AVG(revenue)\n", - "0 89.8825" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = qry(\"\"\"\n", - "SELECT AVG(revenue)\n", - "FROM movies\n", - "WHERE director = \"Ridley Scott\"\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "89.88250000000001" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.iloc[0][0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### *How many movies* were there in *2016*?" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "df = qry(\"\"\"\n", - "SELECT COUNT(*)\n", - "FROM movies\n", - "WHERE year = 2016\n", - "\"\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "296" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.iloc[0][0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What *percentage* of the *total revenue* came from the *highest-revenue movie*?" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>percentage</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Star Wars: Episode VII - The Force Awakens</td>\n", - " <td>1.161088</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title percentage\n", - "0 Star Wars: Episode VII - The Force Awakens 1.161088" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = qry(\"\"\"\n", - "SELECT title, MAX(revenue) / SUM(revenue) * 100 AS percentage\n", - "FROM movies\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Star Wars: Episode VII - The Force Awakens'" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.iloc[0][0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What *percentage* of the *revenue* came from the *highest-revenue movie* in *2016*?" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Title</th>\n", - " <th>percentage</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Rogue One</td>\n", - " <td>4.746581</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Title percentage\n", - "0 Rogue One 4.746581" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT title, MAX(revenue) / SUM(revenue) * 100 AS percentage\n", - "FROM movies\n", - "WHERE year = 2016\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# GROUP BY Queries\n", - "\n", - "```sql\n", - "SELECT ???, ??? FROM Movies\n", - "GROUP BY ???\n", - "```\n", - "\n", - "Sample query format:\n", - "\n", - "```\n", - "SELECT \n", - "FROM movies\n", - "WHERE \n", - "GROUP BY \n", - "ORDER BY\n", - "LIMIT\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *total revenue* for each *year*?" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Year</th>\n", - " <th>SUM(revenue)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>2006</td>\n", - " <td>3624.46</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>2007</td>\n", - " <td>4306.23</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>2008</td>\n", - " <td>5053.22</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>2009</td>\n", - " <td>5292.26</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>2010</td>\n", - " <td>5989.65</td>\n", - " </tr>\n", - " <tr>\n", - " <th>5</th>\n", - " <td>2011</td>\n", - " <td>5431.96</td>\n", - " </tr>\n", - " <tr>\n", - " <th>6</th>\n", - " <td>2012</td>\n", - " <td>6910.29</td>\n", - " </tr>\n", - " <tr>\n", - " <th>7</th>\n", - " <td>2013</td>\n", - " <td>7544.21</td>\n", - " </tr>\n", - " <tr>\n", - " <th>8</th>\n", - " <td>2014</td>\n", - " <td>7997.40</td>\n", - " </tr>\n", - " <tr>\n", - " <th>9</th>\n", - " <td>2015</td>\n", - " <td>8854.12</td>\n", - " </tr>\n", - " <tr>\n", - " <th>10</th>\n", - " <td>2016</td>\n", - " <td>11211.65</td>\n", - " </tr>\n", - " <tr>\n", - " <th>11</th>\n", - " <td>2017</td>\n", - " <td>2086.58</td>\n", - " </tr>\n", - " <tr>\n", - " <th>12</th>\n", - " <td>2018</td>\n", - " <td>2675.12</td>\n", - " </tr>\n", - " <tr>\n", - " <th>13</th>\n", - " <td>2019</td>\n", - " <td>2665.93</td>\n", - " </tr>\n", - " <tr>\n", - " <th>14</th>\n", - " <td>2020</td>\n", - " <td>1025.19</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Year SUM(revenue)\n", - "0 2006 3624.46\n", - "1 2007 4306.23\n", - "2 2008 5053.22\n", - "3 2009 5292.26\n", - "4 2010 5989.65\n", - "5 2011 5431.96\n", - "6 2012 6910.29\n", - "7 2013 7544.21\n", - "8 2014 7997.40\n", - "9 2015 8854.12\n", - "10 2016 11211.65\n", - "11 2017 2086.58\n", - "12 2018 2675.12\n", - "13 2019 2665.93\n", - "14 2020 1025.19" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT year, SUM(revenue)\n", - "FROM movies\n", - "GROUP BY year\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### *How many movies* were by each *director*?" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>mov_count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Ridley Scott</td>\n", - " <td>8</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Paul W.S. Anderson</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Michael Bay</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Martin Scorsese</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>M. Night Shyamalan</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>5</th>\n", - " <td>Denis Villeneuve</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>6</th>\n", - " <td>David Yates</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>7</th>\n", - " <td>Christopher Nolan</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>8</th>\n", - " <td>Zack Snyder</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>9</th>\n", - " <td>Woody Allen</td>\n", - " <td>5</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director mov_count\n", - "0 Ridley Scott 8\n", - "1 Paul W.S. Anderson 6\n", - "2 Michael Bay 6\n", - "3 Martin Scorsese 6\n", - "4 M. Night Shyamalan 6\n", - "5 Denis Villeneuve 6\n", - "6 David Yates 6\n", - "7 Christopher Nolan 6\n", - "8 Zack Snyder 5\n", - "9 Woody Allen 5" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, COUNT(*) AS mov_count\n", - "FROM movies\n", - "GROUP BY director\n", - "ORDER BY mov_count DESC\n", - "limit 10\n", - "\"\"\") " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average rating* for each *director*?" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>AVG(rating)</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Aamir Khan</td>\n", - " <td>8.50</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Aaron Sorkin</td>\n", - " <td>7.80</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Abdellatif Kechiche</td>\n", - " <td>7.80</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Adam Leon</td>\n", - " <td>6.50</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Adam McKay</td>\n", - " <td>7.00</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>674</th>\n", - " <td>Yimou Zhang</td>\n", - " <td>6.10</td>\n", - " </tr>\n", - " <tr>\n", - " <th>675</th>\n", - " <td>Yorgos Lanthimos</td>\n", - " <td>7.20</td>\n", - " </tr>\n", - " <tr>\n", - " <th>676</th>\n", - " <td>Zack Snyder</td>\n", - " <td>7.04</td>\n", - " </tr>\n", - " <tr>\n", - " <th>677</th>\n", - " <td>Zackary Adler</td>\n", - " <td>5.10</td>\n", - " </tr>\n", - " <tr>\n", - " <th>678</th>\n", - " <td>Zoya Akhtar</td>\n", - " <td>8.00</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>679 rows × 2 columns</p>\n", - "</div>" - ], - "text/plain": [ - " Director AVG(rating)\n", - "0 Aamir Khan 8.50\n", - "1 Aaron Sorkin 7.80\n", - "2 Abdellatif Kechiche 7.80\n", - "3 Adam Leon 6.50\n", - "4 Adam McKay 7.00\n", - ".. ... ...\n", - "674 Yimou Zhang 6.10\n", - "675 Yorgos Lanthimos 7.20\n", - "676 Zack Snyder 7.04\n", - "677 Zackary Adler 5.10\n", - "678 Zoya Akhtar 8.00\n", - "\n", - "[679 rows x 2 columns]" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, AVG(rating)\n", - "FROM movies\n", - "GROUP BY director\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many *unique directors* created a movie in each *year*" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Year</th>\n", - " <th>director_count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>2006</td>\n", - " <td>44</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>2007</td>\n", - " <td>51</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>2008</td>\n", - " <td>51</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>2009</td>\n", - " <td>51</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>2010</td>\n", - " <td>60</td>\n", - " </tr>\n", - " <tr>\n", - " <th>5</th>\n", - " <td>2011</td>\n", - " <td>63</td>\n", - " </tr>\n", - " <tr>\n", - " <th>6</th>\n", - " <td>2012</td>\n", - " <td>64</td>\n", - " </tr>\n", - " <tr>\n", - " <th>7</th>\n", - " <td>2013</td>\n", - " <td>88</td>\n", - " </tr>\n", - " <tr>\n", - " <th>8</th>\n", - " <td>2014</td>\n", - " <td>97</td>\n", - " </tr>\n", - " <tr>\n", - " <th>9</th>\n", - " <td>2015</td>\n", - " <td>127</td>\n", - " </tr>\n", - " <tr>\n", - " <th>10</th>\n", - " <td>2016</td>\n", - " <td>289</td>\n", - " </tr>\n", - " <tr>\n", - " <th>11</th>\n", - " <td>2017</td>\n", - " <td>22</td>\n", - " </tr>\n", - " <tr>\n", - " <th>12</th>\n", - " <td>2018</td>\n", - " <td>19</td>\n", - " </tr>\n", - " <tr>\n", - " <th>13</th>\n", - " <td>2019</td>\n", - " <td>23</td>\n", - " </tr>\n", - " <tr>\n", - " <th>14</th>\n", - " <td>2020</td>\n", - " <td>6</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Year director_count\n", - "0 2006 44\n", - "1 2007 51\n", - "2 2008 51\n", - "3 2009 51\n", - "4 2010 60\n", - "5 2011 63\n", - "6 2012 64\n", - "7 2013 88\n", - "8 2014 97\n", - "9 2015 127\n", - "10 2016 289\n", - "11 2017 22\n", - "12 2018 19\n", - "13 2019 23\n", - "14 2020 6" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT year, COUNT(DISTINCT director) AS director_count\n", - "FROM movies\n", - "GROUP BY year\n", - "\"\"\")" - ] - }, - { - "attachments": { - "Screen%20Shot%202022-04-21%20at%2011.37.27%20AM.png": { - "image/png": "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NUzMTSMBEiCBgARC67n79ttvZeFC0yG5jNa8eXNp394sE3TIPvzwQ/nhhx90N+G2qpk7rUWLFtKyZUupUaPsM85/99138txzz0lRUZGsX79esH/EEUfIMcccI8cdd5xcdNFFcvrpp5tp2goSlkdPLlq0yMlH95EX0pfV3n77bdm/f7+bvFWrVtK2bVt3P+0BLCnWuImX7dYtZrqTBt4+QyQQJgLbzPPdoJFXo40buFSZR4MhEiCBRASw/FgY7amnnoqYepf594tf/CIKixF6KedVpUqViBE7kQkTJkSMCIrKL9HOjh07Iv/zP/8TQfpkdSgsLIy8+eabibJzzw0fPjwqv2rVqkWMYHTPpxJYsGBBVF4o5+23355KFqnHnf48poYt+fXvknp6piCBXCOA51yf+Veey7XSs7wkQAIZIsBm2UTKt5znDh48KCtWrJDrr79eTjrpJFm1alXSHBcvXiynnHKKPP3004L0avAGNm3aVOrUqaOHnG1xcbH0799f7r33XqN6oLeCG7xuTz55qNN28GROzP/85z8ppkhD9LlFXib9OHrQg8FQaAlghRW1T82cdzQSIAESCECgWoA4OR+lfv368qc//SmlenTqZCYQjWNDhw6V0047Lc5Zkb1798rKlSsFTbkQa7AvvvhCrrjiCpk9e7YYj1nMtBB0P//5z2Xnzp3OeZT7xhtvlCuvvFKOP/54MZ485/j27dvl1VdflXHjxsn7779vVjk6IL/73e+c5tsnnnhC6tULPokvRNpvfvObmOWJd3Dfvn3y3//+N97piju+4nMv7/bx748XiSESyHECWDpPbfkiDXFLAiRAAokJZMhjWOGXtZtl0XRZXrObZf/1r38Fyg5NsXfeeSfcae7voYceipn2vffec+Mg/rHHHhsxwjBmXD2I/I34i0o3ZMgQPV1qazfLVq9e3U03d+7cUnETHXjppZfctHY+Fd4s28vcR22imleUqIg8RwLhIIDnXJ95PP80EiABEghAgM2yibVvuc6iKfXPf/6z9OrVy80HnrtYZoSRe7hr166OF84e0OGetALIf+zYsfK3v/3NHVRhhJfjMbSixQwOHuxNApxqE6sd384n5oXSeXBdsZdbw8ZemCESCCsB+zlfYz3/Ya0v60UCJJAWAhR3acGYOBM046qZgQgadLcvvviizJkzx9nH6Npp06bJ0Ucf7Z5PFrj11lvlqqu8ObBsoRgvbe/evQWjW2HGy+k0JceLax/fuHGjvPLKK86hM844o2JHx9oXRnildaB2XWuHQRIIKQH7OV8V0jqyWiRAAmknQHGXdqSlMzRNrO5B9JezTfvL6THTdOoMnND9oNvbbrvN9d6hH97UqWbJogSG/nvXXHONE2Pz5s0yffr0BLG9U+hrhz53sGuvvdbZZuSfmmaVChoJhJ0An/Ow32HWjwQqhADFXYVgjc50+fLl7gFb6OEgPHYYbAHDfHUQaWWxDh06yAUXeCPrHnvssaTZXH311a4gtJtaEyXUeIcddphcdtlliaJW7Dl+9CqWL3PPDgJ8zrPjPrAUJJBjBCjuKuGGwZOm5p80eNmyZXpKevbs6YyKdQ+kGIBYU7Pz1WP+LZpl+/Tp4xx+7bXXZMMGM0lqAvvss89Em5UvvvhiqVs3g02jVaomKClPkUBICPA5D8mNZDVIoHIJUNxVMO/x48fLyy+/7F5l5MiRbhgBW4S1adMm6lyqO3Z6TMWCJt9kpk2rQea8U68d8tR0yfKvsPNVKe4qjC0zzhoCZibzrCkLC0ICJJA7BGJPuJY75Q9U0nXr1kUtJZYsETxUNRM0h5gVJJylwGLls2fPHtm0aZPT1Dpp0iSZMWOGG+3++++XE0880d1HwBZ3WFKsPGanx1x7mDTZFnyx8r700ktl1KhRztJqEG/x5rxDfhh4ATNTy0i/fv1iZVd5xwIuuVZ5BeKVSCD9BAoo7tIPlTmSQB4QyAtxB6/U0qVLA99OM4VMwri33HKL4BfU0M8OkwybJc1KJbHFnY5eLRUp4AE0kzZs2FC2bNnipEDeycRd7dq1BQIPwg5rz86bN08wFYvfMOACohWGkbk6obI/HvdJgARIgARIgAQySyAvxB3mg2vWrFlg0hjYkC47/PDDnUESZq3YmFnivNquXbs0WObt7t273bR23u7BGAE0sULcwbCNJe70POLoKFuEaSRAAiRAAiRAAtlFIC/EHYTd6tWr00YeS4+1bds2bn4//PCDLFy40FmC7Mcff3SWEDMrUzhLhR111FFR6bCsGJqBYUHWno1K7Nv57rvvBNdTQ95BDHPeoUn3q6++cppeH3jgAcF8e2rIFwMuYJU+t50WglsSIAESIAESIIFABPJC3AUikUKkESNGOGvAJkvy9ttvCyYwRjPpl19+6fRtmzJlSlSyE044wd2HuCqP2enr1KkTeL48eCox0tYslSY65x1Gw6o9+eSTgqZtGLx8WWFoOk+jhzUr6sRCkICPQOTgQUlfO4Ivc+6SAAmElgCHYlXgrcWgg/vuu8+9AkbNbt261d1HwPauoc9becxOb+cbJE80tWpztN0Ei7S6j2bejM5tZ1ckwEhgOzrDJJCLBAqMuKORAAmQQKoEKO5SJZZifHjEtO8bVnaYP39+VA4dO3Z09zHZ8RtvvOHupxLAIBCsM6tm56vHEm1btmwpffv2daLYc959+umn8vnnnzvHL7rooszObWdX4GDyaV7s6AyTQE4SOFDiMc/JsrPQJEACGSNAcVfB6DGlSpcuXdyroHnWNqwscf7557uHMF1KWQyCTD13GMn629/+NuVstMnVnvNOvXbITM+nnHFFJDBTztBIIPQEzBRENBIgARJIlQDFXarEyhDf7le3bdu2Ujmg6VanFkE/vdmzZ5eKk+gAxNg999zjRkETK0RjqnbJJZfIEUcc4SSDqMOcfU8//bSznxVz29kVorizaTAcVgLW6PewVpH1IgESSD8Birv0My2VY4sWLdxjGLDgNzShYu44NawRO3PmTN1NuMXI3EGDBsmHH37oxKtVq5bcfffdCdPEO4k57zAABAYvIAZY6Jx5aF5WARovfYUfb2VdYecOa4dBEggpgR+/9yrW2gsyRAIkQAKJCFDcJaKTpnP169d3c/r222/dsB2AINN4WAFj4MCB7kAGO54dXr9+vWAak9dff909fNttt0nz5s3d/VQDdtOr3UScFXPbNS/0qrOlZEJl7wBDJBBCAps3epVqaj3/3lGGSIAESKAUAYq7UkjSf0CbOpGz9ovzXwXNnnPnznX752HwBaZc6dGjhzz88MOOJw8DG+bMmSOYTgUirF27du4ceZiXDgMq7rrrLn/WKe336tXLmfMOiXSljjPPPDPpShcpXaSskQvbeynXrfXCDJFAWAmsW+PV7NjUu1p4iRkiARLIJwKc564S7vYxxxzjXmXBggXOXHKNGjVyj2kAEwlDvN14440yceJE5/Ann3wi+CUyNPs+99xzjhBMFC/IOUyHAi/dn//8Zze67c1zD2Yi0PYkc9VDXsrFC0QGenPxZaI4vCYJVDiBJQu9SzjPv7fLEAmQAAnEI0DPXTwyaTwOzxcmFYYdMPOz3XvvvXFzR5+5Rx99VCZNmiQ9e/aMGw8nGjduLNdff73jvYOHL12G/nU6511WzW3XzeLxzvR0VZf5kED2Enh7mle2bqd6YYZIgARIIAGBAtP0Zqb6p2UrgeLiYvn4448F/es2bNggGPQATyC8fKeffrpg3dy8MfQ/atzEq+5WMzilfkNvnyESCBOBbWbC8wbW843nv2HjMNWQdSEBEqggAmyWrSCw6coWffHwoxkCjY4U6WuGDL67sgTH5MdErk99Pj+yJIGcIDC5pGuGU1Y89xR2OXHbWEgSyAYC9Nxlw11gGYITmDJJ5LKrvfjbzbyBdet5+wyRQBgI7NguUs8bZS/PPiEy1JsuKQxVZB1IgAQqjgD73FUcW+ZcEQSGXC5inBiu/X6UG2SABEJD4A83eVXB/I5Dhnn7DJEACZBAEgIUd0kA8XSWEaheXWTcVK9QY58UeWyct88QCeQ6ATzPY4ynTm38yyLVa+getyRAAiSQlADFXVJEjJB1BM4dJPKra71i/fRGCjyPBkO5TGDiWBE8z2o3XyPS/0Ld45YESIAEAhFgn7tAmBgp6wjs2S0yyEyNMtOaB2y06Yt3zxiROnWzrrgsEAkkJIA+duhiAE+02jmdRKZ9JFKzlh7hlgRIgAQCEaC4C4SJkbKSAAZTDO0TLfBQ0AkPigwbYaZJaZCVxWahSMAlgOlOMCp25C3uIScAYTdlVvSgiugY3CMBEiCBuAQo7uKi4YmcIAAP3q2/jO6jpAXv30Wkn2nCbW8+lM1alEwlUdt49WrWLPlVqSpmokAxMzZrCm5JID0EMH2ombBcDprfnj0lv507RLAmMpbOwwormIj79Xmlr4cuB/eNp8euNBkeIQESCEiA4i4gKEbLcgIzzCCLkYNFVmV5OVk8EohHAKPAMVgIfUppJEACJFAOAhxQUQ54TJpFBNDpfJnxkDzzeMlEx1lUNBaFBBISwATFmMdu6V4Ku4SgeJIESCAoAXrugpJivNwigOavOe+JzC0SWfG5yOrFpjmsWGRlblWDpQ0RgVamLs0LRQrbi7Q9SQRrJZ9m+oxi5RUaCZAACaSRAMVdGmEyKxIgARIgARIgARLINAE2y2b6DvD6JEACJEACJEACJJBGAhR3aYTJrEiABEiABEiABEgg0wQo7jJ9B3h9EiABEiABEiABEkgjAYq7NMJkViRAAiRAAiRAAiSQaQIUd5m+A7w+CZAACZAACZAACaSRAMVdGmEyKxIgARIgARIgARLINAGKu0zfAV6fBEiABEiABEiABNJIgOIujTCZFQmQAAmQAAmQAAlkmgDFXabvAK9PAiRAAiRAAiRAAmkkQHGXRpjMigRIgARIgARIgAQyTYDiLtN3gNcnARIgARIgARIggTQSoLhLI0xmRQIkQAIkQAIkQAKZJkBxl+k7wOuTAAmQAAmQAAmQQBoJUNylESazIgESIAESIAESIIFME6C4y/Qd4PVJgARIgARIgARIII0EKO7SCJNZkQAJkAAJkAAJkECmCVDcZfoO8PokQAIkQAIkQAIkkEYCFHdphMmsSIAESIAESIAESCDTBCjuMn0HeH0SIAESIAESIAESSCMBirs0wmRWJEACJEACJEACJJBpAhR3mb4DvD4JkAAJkAAJkAAJpJFAtTTmlVtZbd4oUjRbZG6RyPJFIsVLRNYUi6zKrWqwtCRAAjlAoJUpY/NCkcL2Iu06inTvKdKjt0jjI3Og8CwiCZBArhEoiBjLtUKXubz79om8NFlk3F0i764sczZMSAIkQAJpIdDbqL5R5n00ZJhI9RppyZKZkAAJkED+iLs3ponccKEINR2fehIggWwjAM/e+JdF+pt3FI0ESIAEykkg/OJuz26R268Xefjx0qgGdBU56wKRDp1FmjYTadhYpHZdkZo1S35VqopUNb+CgtJpeYQESIAEYhFAY8iBAyIHzW/PnpLfzh0iWzaJrP1GZPECkXemi8yYXzr1zdeI3D/BvH9qlT7HIyRAAiQQkEC4xd32bSJD+4jMXBiNY/wDIpePEKnfMPo490iABEigsghs2yoyeaLIyFuir3hOJ5Eps0Tq1Y8+zj0SIAESCEggvOIOHrtBptOyLexGDRe5Z6xI3XoB8TAaCZAACVQwgR3bRX5/k8jYJ7wLQeBN+4gePI8IQyRAAikQCO9UKGiKtYXdxEdExkyisEvh4WBUEiCBSiCAPzbHmG4jeEep4d11x0jd45YESIAEUiIQTs/djKkiAwZ7IPDSHHGDt88QCZAACWQjgYmmZeFno72S4V127iBvnyESIAESCEAgfOJu316R482AiFWHaj/6apF/mL+KaSRAAiSQCwRGX2WaaJ8sKWlrs1lq3mnVq+dCyVlGEiCBLCEQPnH3rOm3MsyMOFNDf5Y6ZgQsjQRIgARygQDeWfZgCrzThhrBRyMBEiCBgATC1+du/N1e1Sc8SGHn0WCIBEggFwigD94jZkS/GiZdp5EACZBACgTC5bnDkmKNm3jV37rFTHfSwNtniARIgARygcA28+5q0Mgr6aYNIo24VJkHhCESIIFEBMLlucNasWr9u1DYKQtuSYAEcosA5uDEJOtqc8y8dzQSIAESCEggXOJubpFX7X4cYebBYIgESCDnCGD1HLV5H2uIWxIgARJISiBc4m7F516F25tJQGkkQAIkkKsEsCyi2vJFGuKWBEiABJISCJe4W73Yq3CzFl6YIRKoAAL79++XXbt2yd69ZqoKWloIKNMDWJs13w3rXasVL9EQtyRAAiSQlEC1pDFyKcK6Yq+0DRt74TwLffXVV/L55yVezJNPPllatCgtdN977z3Zts2svWusf//+UrOmmRvQsj1mwfM33nhDImYR9CZNmsipp54qixYtklWrSiYQPOuss6ROnTpWCi+4fPly+eKLL5wDp512mhx5ZElH8CVLlsiXX37pRUwQqlWrlpx77rlOjE8++UTWr18fM3bVqlXl8MMPl+bNm0urVq2kWrXoR3r79u0ya1bw/kpnnHGGNGpkdWSPeVWRffv2ybPPPitbtmyRgQMHynHHHRcnZuUe3rFjh7z77rvORXv06CFHH3105RYghavh2Xr11VcFQq5NmzbSvn175/l6/fXXpWvXroJ7kddmv8PWWO+2vIbCypMACQQhEP0lDJIim+OstApXO3/ntoMwW716tQMDgscv7jZu3CgLFixwYf3444+lxB2E2Ndff+3EwUcXBtG2bt06UUHlHIzxz8qVK93r/+QnP3FjrFixQoqLg32kCgsL3XQoC0RLIoOYhYgcNGiQ1K5d242K8ioL92CCwDnnnJPgrHfq7bffdoRdhw4dKl3YHTx4UJ5//nlHeHfp0kXatWvnFgwiWOvbp08f93g2BvDHBf4QgR1//PHO9phjjnG2+CMi78Wd/Q7TSdkdOvyHBEiABBITCJe4s+vq80TZp8IehtdLDR4mv3322WdRhyAGbYNHZeHChc6hevXqSevWrQWCYsMGMx2DscaNGzsCz9mJ8Y/GO+KIIxyvmkb57rvvnCA8bfoR13P+LUQpbPfu3a6wq1+/fikhhWZRiBkIVIhWeCTPO+88Nzu9Jg4gzypVqrjn/AFwO+yww/yHS+1DGEPogk2vXr1Kna/oA5s3b5Zvv/3WuQxY2lZQUODcLwhwlC+bTZ8TlBHeYRieGXiEt27d6niWcc/z1vL4HZa395wVJ4E0EaC4SxPIbMrGFih+cffDDz8IPGi2QUDZBo+desrQPAbBgOZH9IeCHXXUUXb0qDDElqa146F5VEUkmuCCepVscYZ0aOb1G8r/1FNPyc6dO2XNmjWORwtlhqmAgHC74AJr9KE/k4D7uMacOXOc2GeeeaZZFaryl4Wymago0uLDi2d78vR4Nm61HjVq1BBbxMED+/333ztNtOhWkLdGcZe3t54VJ4HyEgivuKtStbxscja97blTQaaVgdcJXjh4zuAdgTBS0WXHQRheoRNPPNE5rB9i7PgFhRPh0D8qprBri7ug6e28ELbzi3dd1Bd9y9AcjPpAYKLs6MsFbx4sXlrnZAr/fPjhh05/OwiQWP3s4FVD0yjKDS8hREvbtm2jmor1chDRKCuakZs1aybYRzMy7hm8o2iqhPBRW7t2rSOctd8i6o06w7RZc9myZc4+6uvvO4hmUJQN9wLPAMoGr2wsD98333wj+EOgbt26TtlwbfyQB46ddNJJjpfNuZj1D+oDr6Y+W7gPiA9hDq+cbfpMoKwqxnFen1/kkdeWx++wvL7vrDwJpIFAeMWdaZbKV9OPI+pve+4wqlMHWsAjN3v27FLiDh46fNhh6M+F5j2YfogRtkUb9m2z49mCyj6eKL2dF8JB06m3EAMq1HMJoQURA0vlmk6CGP9AsOlAkZ49e0bFgCDDwA30D/RbUVGR9O3bV0444YSoUzNnznT4Q0DPnTvX8TraEebNm+f0IWzY0Exoa+z999+PErsQsm+++aYjDpEHhCz2YWiaVnEHBh999JF8+umnzjn7H3gh4Q3F82Ab6gJxheOLFy8WFY0aB38kXHnllVGCDXFwfWWucbHFdc4//3w59thjncOIo8Lbf2/0/sFLms8WMX8clPif85kC604CJFAWAuEVd4ea5coCJdfT2CNfbXGHjzQEXoMGDZz+Zx9/XDIxKkSCmg60QHMjvDNqtgcNnd111Kye1616krBvf7Q1PbxZ8BRqnzFNp1t4cOx0Ku7gAfJ7fpAG/QNRZhUKEFDqBdK0iAfRF++aOA8vli2Kccxv4AeDJ0r7BGIfwm7KlCmyadMmx1sHTx0GsYArBBr6A2IABryL2vwIMarcIRiRZ/fu3QVCDuJ66dKljpcOIuuiiy7CZRwvG0YFI08YPIfw8KnnTRnjnDIEn6lTp7qCHZ46CCx4NcENnrgPPvjAKVvTpk2R1HlG1GuGPwZwz0455RTnucGAGJQXzxHKiOMwsMXoahiujbKh7xw8kcgDjNDXU8UdhLdOd2L/EYD0+vzCc5jPVmC400iABEigLATCK+7KQiMkaSBuIFQgHlTcwVMyf/58p4box4Q4+hHVZlls1TPVsWNH9zw+whAuamiaTGYQMdqkiGur8ED4ueeei5scwnP48OHOeXzcIYxgKC88jWoQLWgCRL4QKBAgKLPtUbPFnfaT0/T+7eWXX55Q3KHcKlxtYYd84BEDH5RxwIABjgjT/NH8DeEHhhA56KcHUx4Io4l3yJAhLm80scJjivjoQ4j+ihBwEH8QSyrusK8iDvlofeH50mlq4ElUTyz6OXbq5E3uDQH22GOPIakj9FTc2WXDM3LppZe6whr9+SDs8ayotxTpUVYYBPiFF17oskRd0JyrYtGJZP6xr2HXAechBGF6750d/kMCJEACJBCYAMVdYFS5FdEv7jCIAmIJHjBtHvSLOwgBfFghlNAkqwbhAnEDgwfMP5ecxoPgUqFof7DxYdcPtsaNt7W9OCpWEBdNdCpO/WkhfODdUkGj520BocdibSGktAkz1nkcg0CBmIS1bNnS2eIfMFWxhWlR4BmzDRwgtpDWFjh23TD9it4LTQsRpYIJ6dQ7p+lwj+C1s03PKXswV1GLMtvCDukgxMAbnOKVDfMZ+j2m6nGzPZ0YNYypS/Bs2INMwAc/mNYBYS2rLURxHKac7XxKzvBfEiABEiCBIAQo7oJQysE4+uFVUaXTn3Tu3NntR6eCAh4+CDOd/gTiz54rTj/EwIB569DsGMvg2cKktLB4Ig19wfyeLzsveL/UbHEGD5BdJtQLTYGIA88WJjru16+fJnU8lug/CENnfp0Q2Y3gC0AsJTJlACGIwQ9qGKCgYscvnhAH9UFTK8ShvZKF5gdvmfap0zyx1XuDMO6NmjKBt0/7Q+IceGh9VdxBlKtQglczluHayDNW2SDq7PkGkd4W6ra4hJcWHkLcE3hS4XXDtVEm/cPAjq/117LaZdMy+8W6HYdhEiABEiCB+ATCK+7wQbSEQnwE4Tyj4g7NsmjaQ580fz86FRDwtmGkpjaz+TvXq6AAKVu0+cnZ8eyPtn7IER/9zmxR4s/D3rfT9e7d223q0zgQPS+88ILTVIn+cPAcaZ1QXxVFKEvQa2re/q16nyB47LzQdwwGcRhLpOEcpvWAaX87lEtZ2YLHiXToH02D3VgeL/99sL2rek7Lhjz0GMK26XW0bDinZYOItcU2ztn3RO8xnptp06a54hLx8KyBFfrYaf9MjQ8hqmXTY0ijps9hvou7iPGWe3/qKB1uSYAESCA5gfCKO9PHybQRJScQ0hi2uNNmQ6w0ocdRbe0TB8+dDqRAsyL6vdmmAxGQ1hYadhyE9cMPQQDPkpqKhXiDIjSef6vpcE273BoP14FYRD80GLxK2IdpWRCOJ2xwLqipuLO9h0irIzrB0i+EcB5lUrGiXHFM+0KCSSzTfnIQjRhsAcN9gpcS5hdFdn31nJYN8WM1cSI/TafCFF4zFXyaD9KraXyIaH0WMGADdUI5IbAx6EPvFzyqEHcQxNr0DSGqwtt/b3B9ve8aX6+db9uCQ10h8q3erC8JkED5CSRuiyp//pnL4aARd3ls+nHFhxorOEB4+CeEVS8XBIOKCb/XDs11+HDDYn3sFTE+1vrhx0dZ++XZgzESpdd8dIumvVj99/S8bu3mRBWrOKcCAWG/gMCxVE079/vFmAocCCUdsWvnjSlOYBA32pytnHAc9fQbBI5OqYLmaGVp18nPUvOEt0unEtGyIX94b/0GQa/N9rgOTPNB2H8NHNMygCmeKZRfnw9MqYImcH320ByLEbUweCjV45noGvbydMrLySAf/8nzd1g+3nLWmQTSRSC8ri3T1Cg1aqaLU87lox9Y7Q+GD6W/mUvFncZBM5x6vrTCtmBJJJIgEFVo2aLAbi6EAFTRovn7t+iPB3FiC4BE19X+WchHRQ3Cmh4cdNJfHI9l8Fr56+2Pp3krVz1vL6OGPovo9wfRA2EDr5WKG4hm5a8CCXlgoAv6QWod4SGEJ0w9e7bY1j51SOf3xGmemg/i4D6gLOCOwRnoPweBhX00Y+tUOOhjqfdM84k1YAPPiT4PGt/2DqoAxrURF9O4xPI06r2xhSjSwHStWTyL/oEcJTHy6F+8w2gkQAIkUAYC4RZ3dcpAJCRJ/CLEFglaRRV3ut+tWzcNulv9EOOAftDdk1bAjmcLDPs4+vXhl8iuu+4657SKDOwkui48ZmrqubObLxF+6623NErMLUZ6JhN32hyrAlYzgghBUzYGk0C4wkMGjxmaslWgYcoRm60yQb1QPkyVgjDiQwzDIMogFLW5FMfU84XwpEmTHA8ZplCBCFLvmc0K/egwyAMeOnB//PHHnfwg0JQbBnTo9CzIV8uG66rHEMdh6CengyP0Omh+h9BE2TFVDVanwD6uoZ5XpIXAhuBDnfTeah44D4MXUKebQReCvDeKu7x/BAiABMpKIFzNsq0sDDt3WDv5F1RPE2qOCXXtPnBKQ8UQ9tFsphPM6nls9WOPsP9jjGNq8eLph1zjJdpCpGi5NT+InFhl13xsD5Z6kVK5JvKxxajm69+qF8kWLBoHU5no3IHoX4cmbogd9EHD3HIDBw50PW229wuetMGDBzviDKNuVdjhXmA1B7/AwfQoWlbkAzbox2fX13+P0AcOzaUQauCDskHYQaz26NHDmUJGmaM+yt2fj30OYT2PZwhlVfGL9BC48MoNHTrUbYqGVw9NwIma+eHphFcR91ubiXGtvDX7HWa/2/IWCCtOAiQQlECBeZl68ywETZWt8XofKzK7uKR084pETo5eIipbi81yZT8BTO6M5cIgai677LKYBYZ4gfcJ4gkCze89RSIIsWeeecZJD9EHrx4MzbFIGy+dE+nQPyow/Z5XO44/DDGIJlIIPPSJ9Pcd9MdPdR/5w7MH8Qavn+aP1wuEK7yOqJvtfbSvAc/jf//7X0fcXXLJJaITKttx8i782UciXU8tqXavQpH3VucdAlaYBEigbATC1SxbiKacQ+Ju3Voj7soGhalIwE9A53uDCIFggdfMb/COQcAkMvWMIY56vxCGZ1C9g9hPZKmIOs0Hogqiy27m1XPp2CJ/9Sra+YFTMqEGnmg6xxZr5CaLb+cf6vDakjWenTo677ZQ15aVIwESSCOBcDXLtvXWQpXFC9KIiVnlOwF4oiDG4JnSOdrKwkSbUNGMqU2ZZcknTGkwwTa8exDGffv2DVPVylcX+x3WLvYk1OW7AFOTAAmElUC4xF03qxn2nelhvWesV4YIYCQvTOfVK0sx1HNne+3Kkk9Y0mAEcFFRkTPnIvru+QdxhKWeZaqH/Q7rbr3bypQZE5EACeQTgXD1udu80YwMaOLdv61m9YD6Db19hkigHATQ1w391uDFC9qE6r8cRpGi+RGDGHRqFH+cfNpHX0MMtkD/RJ2sOZ/qH7eu28zckg2sd9fGDebd5k0MHjcdT5AACZCAIRAuz10j8/Lray3cPvkx3mQSSBsB9HVDv7KyCjsUBCNBkQeFXcltAUvwoLDzPaaTJ3oHehuPMYWdx4MhEiCBpATC5blDdadMErnsaq/i280KAHXrefsMkQAJkEA2E9hhlpirV98r4bNPiAy9yttniARIgASSEAiX5w6VHXK5iOW8k9+PSoKAp0mABEggiwj84SavMOjmOWSYt88QCZAACQQgED5xZ2bHl3FTvaqPfVLksXHePkMkQAIkkK0E8K4aYzx1auNfNmvN1dA9bkmABEggEIHwiTtU+9xBIr+61gPw0xsp8DwaDJEACWQjAQg7vKvUbr5GpP+FusctCZAACQQmEL4+d1r1PWbN0UFm+oCZC/WIyGjTF++eMSJ16nrHGCIBEiCBTBJAHzt0H0Erg9o5nUSmmRUqatbSI9ySAAmQQGAC4RV3QIDBFEP7RAs8HJ/woMiwEWaalAbYo5EACZBA5RPAdCcYFTvyluhrQ9hNmRU9qCI6BvdykACWJ1yyZInMnTtXiouLnaUHsSJL165dpUqV2I1oSIO4yQwrz9Svbw3CSZbAnMda1vPmzRNMIo5R6yhH586d3aUDY2WB6aDWrjWrPx2yevXqOcsZ6r69xTRHOmk7jmOSch0V7z9np0MYUyOVdaUazCWq64z788U+5tLECP1Yy0OCCdYHV9PR/Lrv32JqLHtS+/KU2593uffNnFvhtt27IpHRV5uZxcz0Yv5f/y6RyP1/jESmTYlE5hVFIl9/GYls3BCJ7NgeiezZHYns2xeJHDwYbj6sHQmQQHoJmHfGwf37S94heJfgnYJ3C94xeNfc94dIBO8e//sI+7+6NhLBO4sWGgJGLESuvfbaiPnwm1supX4dO3aMvPTSSzHru3LlylLxY+WBYy1atIj85je/iRjhFDMvPfjOO+9E2rVrFzNfIzIjZpWYyKpVqzR61PaTTz6JSnfzzTdHnbd3nnzyyai448aNc08//fTTUedi1ckIwchpp50WGT9+vPkMB/8ODx06NGneuJ4ReBGU/+uvv3bLNWvWrKi0ZuqqiFly0j1vB1AmlM8uu11HO24mwuZtkif2+suRSCtTXbxA+SMDPgN8BrLpGWht3kszpubJyzh/qvnxxx9H2rRpEyUAbDFgh2+55ZZSYFIRd5oXhBsEpd/2GWfF7373uwgEnMaNtzUeucjkyZP9WUQqU9zZZfvJT34SMZOdlypPrANBxZ3mf+yxx0a+/fZbN6vhw4dH8Rk9erR7zg48/vjjUfG6desWOXDggB0lo+HYvmBT69AZOiYv2yPyzOPREx2HrqKsEAmQQM4QwKTrmMdu6d6SgWA5U3AWNBmBr776Snr37i1ffvmlGxXNr2j6HDhwYKnJ0B944AGZMGGCGzdWoFGjRnLKKae4PyMoSjUvLl++XG6//fZSyW+99Vb561//Ksbj5J5r0KCBnHfeeXLGGWdE5YPmxssvv1yMR9GNW5GBwsJCt04nn3yyHHPMMVGXe/PNN+W+++6LOhZ0B7yVGXg1b948Kunq1avlb3/7m3vs73//u9t8jIPGGyeLFi1yzyPw/fffRzEuKChw4sVrXo9KXFk7GZWWmbz45o2RyPTnI5G7bo1Ehp8XifQqjETw13M2/TXPsvB+8BkIxzOAVgO8Y64cUPLOeeW5kubaCnoHwhPx29/+toJyZ7ZBCFx00UVRnp0BAwZENfHt2rUr4vf+GLFlegOZ7kCHzO+5u+qqq/SUuzX9yyL/+te/oq6F5kTbTF+/iOlr5sYxq+04njm7udP0p4sYAejGMRokctxxx0V27zZdlA5ZRXnuxowZo5dwt++++27E9CN0y4NmbbssbkRfwO+5M30EfTEiTjO4EWRu3n369ImK83//93/uOXDwn4eXFcf19/Of/zwqfTbsmDcOjQRIgARIIAwEVNSZ9Y+dD08Y6pSLdXjrrVEGthoAADibSURBVLfcD7+Kg71798asypVXXhkVF33i1IKIO8SFSEPzoooNbLds2aLZRCAs7XPx+vghwa9+9auouMZj5uZTmeIOF/39738fVRbjQXPLEi8QRNwhbdu2bd28zzzzzKjsILDRF9Jmhn6CsKVLl0aqV6/unjPe1IgZiBGVPht28qdZ1twlGgmQAAmEkQBGCBpvgjMC88EHHxTTPymM1cyZOpn+alFlveOOO8QIgqhjuoPm2D/96U/uryxNe2gWbNasmWbpNGuiyRW2bds2ef31191znTp1ksGDB7v7/gCadGvU8CbONqLGH6XS9lu2bBl1LfPHS9R+WXfWrVsnZtCIm/ycc85xwwhgRO0jjzwSdQz/vzDK1wzCECP+3HNo6kZzebZZtWwrEMtDAiRAAiQQjABEHfoImRGFFHTBkFVKLOPdca+DKUD69+/v7vsDRx99tNx1113+wyntr1mzRubMmeOmQV8/NbssOHbFFVfoqZhblKdfv36uIFy2bJnTT68sojPmBVI4WFRUFBW7dWt7bdGoU3F3Fi5cKOvXr3fPL168WB577DHBNDMwMwBFzGhmJ2z/06tXLzHN4DJp0iTnMKaAQf/E999/342GvnzXXXedu59NAYq7bLobLAsJkAAJBCAQVNTBo0MLTsA0pwWPnCCmLajgffLfB4gNzHkXyzC3Ws+eZgL+GIbBGRMnmrkRDxkGR5gRufLKK6+gi5VzFB7CG264QaOIXRYcNP3o3HPxAnYc089NzHQhgdLFyy/ZccxLZ5qRnWgQXfDQwWNo19VM9SKm6TlZVqXOQ5DFs1atWjmiGPMExjL84TR16lTBABOYLewgdjHYIhOiN1ZZ/cco7vxEuE8CJEACJEACZSSApjt7YltMmOu3GTNmyIgRI/yHnX3T10vgbYpl8M7ZHjp/HEyKDMFhe+4gzGyLVR77PML+OBUt7tBsjV8iQ/N1uoUUmmbhfXv++eelS5cupS5/1FFHyd133+00xfpPmkEU0r17d//hrNlnn7usuRUsCAmQAAkEI4CPDj52mG7DjIqNu6oAvDn8BWcQjH7iWPC82X2w4GWtLEPT4fz586Mu5++3FqQ8/jj+PKIuUME7ZmSvM1XJZZddVqYrPfzww2JGJbs/THty9tlnO/3qkCH+D6HPnd2Pzr7QjTfeKOinaBua2tHXLpuNnrtsvjssGwmQAAkkIKAiD3OYse9dAlCVfKp9+/Yye/Zs56oQD2ZyW6latapbipNOOskZAKMHXn311bjNtBoH27POOkt+/etfu4ewVBYGS0yfPt0ZOIF9nMf1zz33XCcewratWLHC3o0ZtuMcdthhouLOPyjEnjPPnxHqbJs/rX3OTN0iWMpMDdc84YQTBJwg6hAuq1166aWlljLD/5df/vKXYqaQcbLFsmMffPCBmNU5Sl0G9w2DKa6++mr33E033STxmnLdSBkOUNxl+Abw8iRAAiRQXgIUeeUlmN70trgzy1c5kwFfcskl7kXQnGc36c2cOdM9p33n3ANWABPwDho0yDoiYqZSkRdffFEuvvhi9/ijjz4aV9z95z//EbNSRal+gJoYTbBmOhbddYSVNofaffEQAaIonmFEqm2JBkNgtPCoUaPs6BUe/ulPf+qKO1zstddeiynucM6/Dq2ukYtz2Wpsls3WO8NykQAJkECKBFTkaXNtiskZPU0EMPrSHkTxl7/8JWpBevsy8BjF62Nnx0sUvvDCC6OmQlmwYIEbHULEFn4YlKEeKzfSoQA8cWZuOcfTqOfsvoF16tSJ8oJh5Qgz+bFGjdq+9957UfvoD5hN5vc6oq9kmIziLkx3k3UhARIgAUNARR5hZIbAqaee6kyjoVdHPzizyoHTH84WFfAWYZmvRN46zSPRFk2HPXr0cKP4+8xh7kM0daqNHDlS7r333qiBHxhcgLI89dRTGs1pFrVH3uIEBiCobdy40ZlaBd5JNdQP/dxQNzUsL4YpVrLFMFLZTNYcVZzTTz89aj/Xd9gsm+t3kOUnARIgARLIOgL333+/TJs2TVT4QOBh3VR40tq0aSNo/tTpP9JR+KZNm7rZoO8dRJY2p6LP3P/7f//PmSgZkSAm0TSLH+Z5w1qp9lxwiAPBaJYFi+oriOMYyINmZJ0o+4UXXnCahTGtCDx78BojP9v++c9/2ruVGu7QoYPLARdGuTG9i22YZiXRXIR23FwJ03OXK3eK5SQBEiABEsgZAvBUzZs3T84444yoMkN44bgKOzTfYhJjCLDyGASjGoTdN998o7vO9o9//KPTHFu7du2o48uXLy8l7DCf3KxZs2L2QcN1HnroIXe0KTKDWISoQ3OwX9hhMIJZ/izqmpW5gxU6wFp/fmGHka8Y0IJtmCx/xd3mjSKvvCBy920iw80kh73N5IjHFYjpKMEfGfAZ4DOQ3mcA7xa8Y/CuwTvn1edNb3TzDqKFmgAEG0TSPffcI+hzpp40rTQEBQZDYEBBt27d9HCZtv709pJjmiHmZoOwvOCCC6Kma9HzEHW/+MUvHJHmF6UaB1vEMeu8OsuY2X0L7ThmvVb58MMPnVHc9vFMh3EPMDAFK1Cg+RgeVIzKDZsVGMUdCVul4tYH68G9NFlk3F0i766MG40nSIAESKBSCPRuJTLKvI+GDBOpXqNSLsmLZI4AmgTh3cJI0s6dOzvNs5krjUhxcbHTDxDePDQZl2V6j127djnrtK5cuVL27t0rGBWLH5poaZkjkD/i7o1pIjdcKEJNl7mnjVcmARKITcBoPBn/skh/846ikQAJkEA5CYRf3O0xHSdvv17k4cdLoxrQ1cwKeYFIh84iTZuJNDRt7rXritSsWfKrYiadNJ1Knaba0ql5hARIgARKE0BjCCZwPWh+mCYCv507RLaYOcHWmn5Qi800Fe9MF5kRvZKAk9HN14jcP8G8f2qVzpdHSIAESCAggXCLu+3bRIb2EZnpW6dv/AMil48Qqd8wICZGIwESIIE0E9hmpo+YbBaBH3lLdMbndBKZMkukXv3o49wjARIggYAEwivu4LEb1DNa2I0aLnLPWJG63jInATkxGgmQAAlUDIEd20V+f5PI2Ce8/CHwpn1ED55HhCESIIEUCIR3tCyaYm2P3cRHRMZMorBL4eFgVBIggUoggD82x5huI3hHqeHddcdI3eOWBEiABFIiEE7P3YypIgMGeyDw0hxxg7fPEAmQAAlkI4GJpmXhZ6O9kuFddm70WqLeSYZIgARIIDaB8Im7fXtFjjcDIlYdqvDoq0X+EWMwRWwePEoCJEACmSUw+irTRPtkSRlam81S806rXj2zZeLVSYAEcopA+MTds6bfyjAz4kwN/VnqmBGwNBIgARLIBQJ4Z9mDKfBOG2oEH40ESIAEAhIIX5+78Xd7VZ/wIIWdR4MhEiCBXCCAPniPmBH9aph0nUYCJEACKRAIl+cOS4o1buJVf+sWM91JA2+fIRIgARLIBQLbzLurQSOvpJs2iDQ60ttniARIgAQSEAiX565otlfV/l0o7DwaDJEACeQSAczBiUnW1eaYee9oJEACJBCQQLjE3dwir9r9OMLMg8EQCZBAzhHA6jlq8z7WELckQAIkkJRAuMTdis+9Crc3k4DSSIAESCBXCWBZRLXlizTELQmQAAkkJRAucbd6sVfhZi28cIhCEbNu5QGsW0kLDYFdu3YJfri3tPITAEfw3IM1XXPZsN61WvESDXFLAiRAAkkJVEsaI5cirCv2StuwsRfO8dDmzZtl4cKFsnHjRkEY4q5BgwbSuHFj6dy5sxx99NExa7h792554403Yp4rKCiQatWqOfkcd9xx0qSJNRDlUIpFixbJqlU6YaCXTXUz51b9+vXdtDVq1PBOWqGioiLZsMF0BA9guP6pp57qxHzrrbdk586dMVOhzEcccYQce+yxUlhYKKhHEAO7OXPmxIxapUoVqVevnjRq1EhatWolhx12mBvv448/lm+//dbZ79u3r9StG3tanb1798qbb74p+/fvd8p0xhlnSMOGpt9UEps3b5588MEHTl0uvPDCJLEr7zTKhGfNvi+Vd/XUrrR48WJZuXKl8zyff/75Dv8nn3zSEcvXXXed4P7mpNnvsDXWuy0nK8NCkwAJVCaBcIm7lRa62rE/wlaMrA9CxH366afO7+DBg1Hl3bJli+C3YsUK6dKli5x22mlStWrVqDgQVqtXr446Fmvnk08+kZ49e0qPHj2iTi9fvlzWrVsXdcy/A6EF0QNR5Dd8dH/88Uf/4Zj7EFYwiKQlS5J7KRYsWCAQpeeee66Z3zX5BK9r164NxKJ27dpy3nnnyTHHHOOUByL2o4/MGp/Gli5d6nBydnz/zJw5U7766ivnaNeuXQMJuzVr1siHH34otWrVkp/85CeBharv0mXenTt3riOK6tSp49TZzgj3Dp4v/BGR7Yb/A998840cddRRblFx//CHCZ7f5s2bu8dzKmC/w0r/jZVTVWFhSYAEKpdAuMSdza6mWaUihw1i7oUXXnC9RvAYQczgQwVP2aZNmwRenx9++EE+++wzx2uhni+t9nfffadBadu2reAjrgbhuG3bNikuLnY8HBAwTZs2dT+EaNqCtwsGAdeuXTtN6ggweLNQBlx/+vTpMmzYsCjvH46rsINAUvHmZuILtGzZ0jlie/rwgVaRhZMoE/L9+uuvZd++fY6Ymj9/vpxyyilO2kT/2Cwghm1vDjycEAHgAY8hPIdXXnmlI7Zat27tePLQzAdxBwHs9xbiPqiwa9GihSO0E5UF53Cd119/3alTv379BKKysg1lBhf7uUAZwEMFUSzRXtnlTHQ9PBP6zMQSd6ij1iVRPll5LsffYVnJlIUigTwhQHGXpTcagk2bA9Hsiia7mtbLvlmzZnLCCSc4AhAiC14YCDhbRNmC5swzz3REmr+68JJBzMDgSdIPIbyCEFAwCC80M/oNXkVt6pw9e7ZccsklbhT72ieffLKcdNJJ7rlEATtdp06dokSlpkPZnnrqKUcYwWOTiriDiOrVq5dm5W4hdp999llHsG7dulW+//57pwkW3tD27ds7fHEMjCDg1OARhPcNBgE+YMCAKOGo8fxbNHtCMKJpGQKysg1/PKh49zfJw5OI5s1csO3bt7t962xxd+SRJXPCwXvXu3fvXKhK6TJa/99Ln+QREiABEohPILzirkp0E2V8BNl3Bh4kbQpEs9jgwYMdb52/pBB7EG0vvfSS4GONpjT7Q6ZC6fDDD48p7JCf7ZmBaFLTtNi3P5p6Htvu3bvLl19+6YgEeL7gVYOXDxYkvRPR9496YXA43nXRlw195MDJLrMvK3cXniiIAJhfyGgkiDhcD0IZZjdxd+jQwRF3OA7vnYo72/uGvoADBw50mlgRL5FBtC9btsyJguZwv6knEQwhKFFXeFX1unZ81EubziESER9N8egvh3QQ5nad4U3FeWwhaGEIo16Ihz8OkB/yRXN3mzZt7Ms5Xtv169c79xf84fUDN3iV/YbnAeIbBs8vrgNPMdIjbwhb+/nT9PDGIR6ENBjjXuA6+CMHaWyznzO7ntpvcseOHU497ftpp8/qcA6/w7KaKwtHAnlAILziztf/LJfuJTxi+uHt1q1bTGGn9cEHH8ICHflVmOCc3SwaTyQhnooehO3BAvZHM96ADaTBR109QMhLxZ2KNHxUbW8i0iQyvS68RxAnsQxsUD+YXeZYcXFMy4JwPBYQxxATMDQj282kKAcGcEAUQcyijyGYo1kVggWGPnMY4BLE3nvvPScahIqfLTxN6L8Xa6QnhBr6A+LaahCJ+EMAx+BpRd4QR2oYEHL66acL+gHCvjZN2uqp1Tho2oZBnOJewasIAQovri3ucOy1115z2Wt6bNF8jvQqqnAMTaKzZs1yPM64nzNmzHC9wTiPQUIoG55xNfB8+eWXo55lPYctvNPwjqrpvYVYtPsH4npqyNPf9KznsnkbqVJFCrK5gCwbCZBA1hLwvhJZW8QyFqwgd1+LKtLgcbP7usUjAYEDD5btxVKRhDTxBA2aBVVoIN7xxx+PjWOa3v/R1PO6tT+a8JKguRjiQtOjbPoB1jT2Fvmr+EN54HmC2V4YOz6EHQQDxCzsxBNPtE/HDGtZcBKizRa0yAfNsBA4OA4x2qdPn1L5oFkZ4g7Xx0ATxFWPGYQTREcQg0dNy4O+f7ahDGjehqFZEcIK5cVIUIg+CDMIObuJXPNCuZAWzwtEGbx/aNqHsIFYgzgFZ4hv9BuESMXzgvzhmYRBoNnNtfZzg0ELGHmN8xC/qC/EFDxsX3zxheONw7PUv39/Jy/8o2VDmldeecVpfkY5MGgGohMCFmW0xR36b+L5x3OBcoEDngvEgxcP5UDfUpTBvgaeF7svpN2FAens59RJmAP/FBhxRyMBEiCBshAIr7grC40sSANhpCINH9cgzUkqdOwpSWxBhWYwFQ2oIoSA9h9DWnim4EHRfko4BhEC8380nYPWP7aXSD+uED74gMMgnKZMmWKliA5CwMAbBVMxgDBEiV1mXAfeOniP8LHGxxuiSoUJ0sQzm4Xfa2WnQbMmhE8sDxy8ZhBGKAMEFsoHg/cN7IIaxAkMnjbt34h9CGPtu4droc+b3nsI2MmTJzseUowSxvWUtTLDPtLYzZwQUuibCNMme5QXPwhGGMJ20zC8sHg+YCqwcS8hqCHS8EwOGTLE9SbjDwKch5cOohf9GfFHCUzLBo8ivJ0dO3Z0juMfiE+M0oZww/VQV8TXNIiPPqVqqJ8+D1r3eEIUafT/BMJ4XmgkQAIkkE8EKO6y7G5DGOnHNV6zpF1kfOC0idKeV00/kogLjxN+sQwCCdOo2KNH8YFHvjDbexMrvXoZcU69I/a1Y6Wxj9n52yIM+dp522nQFA1BaHtn7PP+sJYHAkLLqHEg0lSIolkWYjOWuAMfCElb2MErCU+Vig3NM9FWxR3qoOIN8TEwBfcdHitM72Kfw3lt/kYcCHNcG1uIIxjKZgs7HIOnDj8IdfSPU4PYsv+A0OPY2vdA7w26Ceh1UF/7jwikQdkg7mAQ8xB3YIowDGLVFnY4ps84RK7WFWXFvHQwu3kXz6I+C2CtTf+og4o4LauT2Pyj5cU+mNJIgARIIJ8IUNxl2d2GB0dNPSC6H2uLj7YKMVvc6UcaH0m76RIeMHz40MQH7wkmKsbHF82paiqGsO//aGocbJGXikZ8oLX/mJ1++PDhCfvF2aLSTocRtrZoglhA53yIX2zRFIgJnJMZvDbquYH4US+hnQ4iAf3nIILQLwws7D53GlfFHfYhSoIOoND0qIOKLHjVbNOBB/CExRKt9r1VMWrzijcaWfOyPawQ77rvv7+aJ54bFcJaNpQ51h8cscqm/TBRx1jeVb2OLaTBFM8mhCKEIf5owT7uuYo1XEvFoD7juIZ6GRGG4dlW03roPrckQAIkEHYC4RV3RngYdZBz98/+EGn/s0SV+Pxzbz1d/chCQGiHfHiI7D5amheEDJrs4MVBHmURd+hvpWIFAtH/0UWndruTu1473lY/+PDMYBSw31DWSZMmOWINfbCCiDvNE3n5hYzmD27ox4V+YTDUyxbEGk9FNPbRhGsLE42TaKseVsSxRRKEi4oXbRr352On1f5mKm4gkPXe+9PpHwvw9KkpE6SDt8w2PaesIALVy+cXUJrOfk71fms+iGM/W9hHnlp2vQ6Oo9kVzc4qPFE+iEyMFMaUMxBsdny9Bp4zu37IC4JQzf4/pcdyYRsxHsvce4PlAlmWkQTCTyC84g79hownINcMH32IJDRboa9cIsPHTldzwAdOvUH60UPaeB9kfNTRXAXBpM1nei1Nb3tv9Jxu4T1CPyw1eNpgEEDqtYl3bU1jb+0mRvsDbsdBeVFueOIQH01y8PYkMhURiBMvX5yzhZvt9cE5NeWC/UR5aXz/1hZotmfQPu5v8tQ84GmFQahonbU88M7ZHlAnovkHwlvzVtGFc5oOQlIFOY6Dpwo5rR/+SNCmz3jNm+q9RRlUZOk1IETVe4hrwPC84bmD6XUwclZH7aKrADyRyAveW9yPf//731HxsaPX0DycCIf+gUCH4f+T8jp0Kmc2BYe6RuRMgVlQEiCBrCEQ3uFYB0s6hWcN6YAFwQcSXjAY+hnpfGjOAesffHSnTp3qfiTh6YIYgwURNBAz+oG1BQU+pOr1iPXRRP4QV/ByaTx8iHUliUT9oJA2numHGucTiUJtkgSnIB9tzRciIV6+8BTZHtB49ba5xssrXv1wXAdhIGw3udtePG0CRRw1XFeP6yAD2/sFr596ajUNtvBuwsAp1khofz3xvKnI1frhjwYVZ1oGJ9ND/0A86jOKa6jIVFaaj51Gz+GYntc+e/DSwdMMJtosr3/AIL6WGX/86KAfPYbzMLBRcRdktHlJqiz8N0ffYVlIkkUigbwjkNjtkcs4jPiRGjVzsgaYiBgfJ4gvLEYPLxX6LUG84UOOjv/o5K6dzDHq0m5GtAVNvGY+2zuFD7ia/eHFRx3NYWpo4oNXDv3dVExgtGWsiZORBmW1P8yaj72FWIEgsK/r/1jb8bX50i6zfd4fVhbwlNnXQDwIBAhUlFHPgSUERizTOBAd8bjGSqfH7DLbYYhrNKtCGEPkYMUN9YCBN0Q8DHXQaUPglVOhi3NFRUXOfUDZINCwYokKVqywocIfddamWr84VlbIz74H6EsJ7xyeBTxz2hyNfDAnHfKEVw8Dc2C4R3oNOx/npPlHr4N6axOzehjxXCE/9Sji/wFG1cLwnGgzMrj4hagTyfyDKWr0+cxpcYd3GI0ESIAEykAg3OLOW0q1DGgylwR9zs4++2xnslkIPIykxA9iSz9aWjp8vOx52fDB02ZRCIZ4TWm2uFPPDPLUDy/C8MioVwb7tkFEoM8bvCzqrcF5FUAIQ1yowMC+3+C9gvCA2ddVb44/Pva1/naZY8XDMQg3jQ/xgLV6ExlEDCYjjmdaNwgMvzCKl8Y+bjfF4r7aHlPcwxdffNFpgkRfSDCAp0+bzMEKI1X1ftq88AygWfNr03QLUYhz6pWFWFXRhbLgvuF+4TnBmri4v/C44T5q/dD0q2IQaeAVhtcOaZ555hlH+CF//eMCZTrnnHPcQSiaD9ImEnc4h/LAUE7UFd64xx9/3BGQuH8Qsfp84foQunZZkdZ/Dfzho8fj9UV0ImT7PxR32X6HWD4SyFoC4RJ3rQznVYdY7zSjThuXrC+ZtfQTFAyTxOKj9e6777ofVhUqSIaPFuY7809/YTeLJhJJKhKQl44mRdgWDdhXQ3yIEXz48SGGx83ux6Xx4qXX8/ZWy2c3Mcbqo2WnUVEF4YOPvX747TgaTlYWCAtcD54oNCtjuo54+UFkKH8tt14n6Fan8EB8iGtb3IHpoEGDnH6M8HqpxxTc4R3ta+Z9s5tyVUBB5GLqFOSFuezUYwbPIKZ1gVdVvWC4LuqHwSPw9IEfvGwqjpSXv3541rBu8DvvvOMIOu0Linzh5TzrrLOiBoho2cDX7+GEV05FoV4X5cKzDA81BCqeR/xwr3Ec5cESezCITAhY7Z+H59HmgnkQtUk21hrCTia58g/eYWp4t9FIgARIICCBAvNhNcNKQ2K9zfQSs0s6Usu8IpGTS6/bmYs1xUcYXg38IBB0MEQu1iXfyzxhwgTHqzZs2DC3v5nNBP8d4WWEmMS9hvhU75YdDxNDQ8hgNDQmFYbBmwbPFwQhBFmsdJoHnikITIjAeIJW49pbiC6UDaIS10glrZ1PvDDEqV13zR9ePIg//EFhe0D9+UAEQgDCm2mvluGPlxP7n30k0vXUkqL2Mmvqvrc6J4rNQpIACWSeQLg8d4Vo4jsk7taZvmIlAzgzT7mcJcAHDoJO+xuVMzsmzyABXR0CHla/hwzFgiCDNwq/eAZhpk3vtvcLok7nGoyXVo/jmbI9Xno82RbCKpG4SpY+2Xl45bS/oR0XAyzsgSf2OQ2jiRnCDoIVTbc5b2u/8argvNu8XYZIgARIIBGBcI2WbXuSV9fFC7wwQySQJQS0GV2bNstSLHjn0LwJiyUQy5JnrqeBt1On5oHHzm4Cz9m62e+wdt7SbTlbHxacBEig0giES9x1s5ph35leaRB5IRIISqBly5aOdw4jOstq2jcO6W3PXVnzC0M6rBmMPpHoTwjvaCjMfod1t95toagcK0ECJFCRBMLV527zRjOIoonHa+tmkfoNvX2GSCALCGBAAZpWy+p1g5dK58wrax5ZgCFtRYAXU+e8wwCORH0N03bRis5om1mXt4H17tq4IacHiFU0LuZPAiQQTSBcnrtGZnRs39ZeDSc/5oUZIoEsIYDRueURZWhyRPry5JElKNJSDIzaVR6hEHagMnmix6a3GSqbwyP/vYowRAIkUFkEwuW5A7Upk0Quu9rjt32bSN163j5DJEACJJDNBHaYdXHr1fdK+OwTIkOv8vYZIgESIIEkBMLluUNlh1xuVnW3av37UdYOgyRAAiSQ5QT+cJNXQMxvN2SYt88QCZAACQQgED5xZ6aDkHFTvaqPfVLksXHePkMkQAIkkK0E8K4aYzx1auNfFqleQ/e4JQESIIFABMIn7lDtcweJ/OpaD8BPb6TA82gwRAIkkI0EIOzwrlK7+RqR/hfqHrckQAIkEJhA+PrcadX37BYZZKYPmLlQj4iMNn3x7hkjUqeud4whEiABEsgkAfSxQ/cRtDKondNJZJpZoaJmLT3CLQmQAAkEJhBecQcEGEwxtE+0wMPxCQ+KDBthpklpgD0aCZAACVQ+AUx3glGxI2+JvjaE3ZRZ0YMqomNwjwRIgAQSEgi3uEPV4cG79ZfR/VgUSf8uIv1ME2578zJt1kKkYWOR2sarZ9bNdH5VqopZdR1rQmkKbkmABEggMQGzPnDEzGNYcGC/ef/sKfnt3CGyZZMIlhTDyhOYoHjG/NL5oDvJfePpsStNhkdIgARSIBB+cacwZphBFiMHi6zSA9ySAAmQQJYQwAh/DARDf2EaCZAACZSTQDgHVMSCgo7Jy8xf0c88Hj3Rcay4PEYCJEAClUEAk65jHruleynsKoM3r0ECeUIgfzx3/huKJpI574nMLRJZ8bnI6sUi64pFVvojcp8ESIAEykmglUnfvFCksL1Iu44iWCu2R2+uPFFOrExOAiQQm0D+irvYPHiUBEiABEiABEiABHKaQP40y+b0bWLhSYAESIAESIAESCAYAYq7YJwYiwRIgARIgARIgARyggDFXU7cJhaSBEiABEiABEiABIIRoLgLxomxSIAESIAESIAESCAnCFDc5cRtYiFJgARIgARIgARIIBgBirtgnBiLBEiABEiABEiABHKCAMVdTtwmFpIESIAESIAESIAEghGguAvGibFIgARIgARIgARIICcIUNzlxG1iIUmABEiABEiABEggGAGKu2CcGIsESIAESIAESIAEcoIAxV1O3CYWkgRIgARIgARIgASCEagWLFoIY23eKFI0W2RukcjyRSLFS0TWFIusCmFdWSUSIIHMEmhlLt+8UKSwvUi7jiLde4r06C3S+MjMlotXJwESCCWBgoixUNYsVqX27RN5abLIuLtE3l0ZKwaPkQAJkEDlEehtVN8o8z4aMkykeo3Kuy6vRAIkEGoC+SPu3pgmcsOFItR0oX6gWTkSyEkC8OyNf1mkv3lH0UiABEignATCL+727Ba5/XqRhx8vjWpAV5GzLhDp0FmkaTORho1FatcVqVmz5FelqkhV8ysoKJ2WR0iABEggFgE0hhw4IHLQ/PbsKfnt3CGyZZPI2m9EFi8QeWe6yIz5pVPffI3I/RPM+6dW6XM8QgIkQAIBCYRb3G3fJjK0j8jMhdE4xj8gcvkIkfoNo49zjwRIgAQqi8C2rSKTJ4qMvCX6iud0EpkyS6Re/ejj3CMBEiCBgATCK+7gsRtkOi3bwm7UcJF7xorUrRcQD6ORAAmQQAUT2LFd5Pc3iYx9wrsQBN60j+jB84gwRAIkkAKB8E6FgqZYW9hNfERkzCQKuxQeDkYlARKoBAL4Y3OM6TaCd5Qa3l13jNQ9bkmABEggJQLh9NzNmCoyYLAHAi/NETd4+wyRAAmQQDYSmGhaFn422isZ3mXnDvL2GSIBEiCBAATCJ+727RU53gyIWHWo9qOvFvmH+auYRgIkQAK5QGD0VaaJ9smSkrY2m6XmnVa9ei6UnGUkARLIEgLhE3fPmn4rw8yIMzX0Z6ljRsDSSIAESCAXCOCdZQ+mwDttqBF8NBIgARIISCB8fe7G3+1VfcKDFHYeDYZIgARygQD64D1iRvSrYdJ1GgmQAAmkQCBcnjssKda4iVf9rVvMdCcNvH2GSIAESCAXCGwz764GjbySbtog0ohLlXlAGCIBEkhEIFyeO6wVq9a/C4WdsuCWBEggtwhgDk5Msq42x8x7RyMBEiCBgATCJe7mFnnV7scRZh4MhkiABHKOAFbPUZv3sYa4JQESIIGkBMIl7lZ87lW4vZkElEYCJEACuUoAyyKqLV+kIW5JgARIICmBcIm71Yu9Cjdr4YUZIoGABPbv3y+7du2SvXvN9BO0tBBQpgew3iotOAGsd61WvERD3JIACZBAUgLVksbIpQjrir3SNmzshRlKSmDOnDmyceNGKSgokPPPP1+qVq2aMM0esyD6jBkznDhNmzaV7t27O+GIWTT9lVdekYMHDzr7NWvWlP79+yfM64MPPpDNmze7cU477TQ58siSzuNff/21LFy40DnXrVs3adasmXNdXD+ooU4DBw6UKlUS/y2zb98+efbZZ2XLli1O/OOOOy7oJSo03o4dO+Tdd991rtGjRw85+uijK/R65ckc9//VV18VCLk2bdpI+/btZdWqVfL6669L165d5YwzzihP9vmV1n6HrbHebflFgbUlARIoA4FwibuVFoHanNvOopE0uHjxYsdj1aBBg6TCDplt2LBBVq9e7eR7zDHHuPlv3brV+Zi7B0ygX79+Zg7W2JOwrl27VubNm2dHl7PPPtvdhzDQ65x55pmyc+dOWb58uXs+SKBhw4ZJhR3yefvttx1h16FDB6lsYQcx/PzzzwvEUZcuXaRdu3Zu1davX+8y6NOnj3s8GwPbtm2Tr776yina8ccf72z1+cC9pLhL4a7Z7zCdlD2F5IxKAiSQvwTCJe7s+2g8RrRgBL7//ntH2CF2kybWVDIJkn/33XfuWTuNfVwj4IOvnjg9hi2EzOzZ1ghnc6x27drOT+NpfhCHEJ7w8LVu3VpPO1s0oX7zzTdOuH79+tKokTWFhDkKz2IyW7BggSMa69WrJ7169UoWPe3nUa9vv/3Wyffwww+Pyh+eR9QZ3lSUL5sNol9Nn4sjjjhC6tSpIxD+eBZwj2gBCJTzHbZu3Tq599573QtBWF9++eXuPgMkQALhJUBxF957G7hmKqCQ4KijjgqUzv6I22k0r1q1asnu3budvLZv3x5T3C1dutRpCkZzKYQLmkXtvNC0p821EAoQOY0bN3aaje1CrlixwhV3nTt3lk6dUhtMA28gmqVh8A7G8zLa10x3WLkhXxVFeg148WxPnh7Pxq3Wo0aNGlEiDuIef0TAe3fyySdnY9Gzr0zlFHf4vzN2rFmr9pDh/xfFndLglgTCTSC84q5K1XDfuTTWLp5QS3QJ9TLVrVtXIOTUNK/mzZvLmjVrHIEHb43f4G1TQYV+WZ9/XjLS2RY26AOoffds0efPSwUFjieK50+n+x9++KEjLCFAYjXH4iOJplHUDUIUnqe2bdtGeRg1L/QRxIAMeCDRPxD78KBgUAGEKZoqIXzU0CyNPnVffvmlcwgsV64s6V+gzZrLli1zzoGN3ysJtigbGIAVygYvXywPH7ybP/zwg+CeoWy4Nn7IA8dOOukkgZfNb6gPmsLheYNgh2cR8dGnzh9f74WKcc1LnxHkQQtIgO+wgKAYjQRIwE8gvOIuyYAAP4h83tcPMoQLBEgyg6cLP5gtpuBpgyCDQSj9+OOPjrCJJe7mzp3rnMdHv7Cw0BV3dn5aLuRnH8e+bRovaPnttBBsX3zxhXOoZ8+e9ilHkM2aNUuWLCk9UrGoqEj69u0rJ5xwQlSamTNnOgLoxBNPFNQRAtc29C8cNGiQoB8g7P3333dEo8aBeHrzzTcdcYg8wBP7sPPOO88VdxByH330kXz66aea1N1CNGNQCgYw2Ia6QFzhOPpYqmjUOGiavvLKK6MEG+Lg+iqyNS62uA4G3xx77LHOYcTR+++/X4cddpgTR58bZ4f/JCQQMf8fCxLG4EkSIAESiE0gvOLONOHRkhNAvzf1tsErVK1a8kdCxRRytz/i8HCpCIC4g0cKXis0y9qG45999plz6NRTT3UEh563PXfxrqNxsUX5VVBAmCYb5WunRRgiBwZPVKtWrZww/oGnbcqUKbJp0ybHWwdPXYsWLRzhBoEG4YoBGBi5qn3IUC9tioZgRJ4YRQwhB68ZmqERByLroosucq4FLxu8nDqoBJ5D1EM9b3pvEFlZo85Tp051m6KRBwQWxDUEGsQ0RiCjbNrfEJ5S9ZrBSwohfMoppzj9GIuLix2BizgoI47D4J194403nDCujbKh7xzuKfIAI9xHFXe4/ygDzL6P2MeoaRg8h7RgBArMPSqP4ZnFHxhq+D9JIwESyA8Cyb/k+cEhb2sJIYCPOkzFQzIYsQQH0thiDB8STCkC83vu0AwKEYABEhiZiqkzYBBD2nyHfb0OvD4QFbEMggV9iWBBy6/5QIhqE6gt7HAeHjEIO/TzGzBgQNQgjv/f3rmF2HXVYXxFQQVR03p5UWOKWEIxJRrJW2IuxD6ETgaSSX2JWiFIvQuaF4XkRfBFEKqtTx1jTGjsk8aXIkEcHxwTvDRYRKRolfbBemkLfaho6vrtme/s/9ndZ8+ZM5nJmbW/BTNn7XVfvzXZ58t/3dj9ifCjD4gc1unh1F789H92dnYgaphiRXiSHmseghcBh/hDLEnc8Rz7IaaRAZZEbSBh92xcY4gAm5+fpwmV0JO4i21DaB0/fnxgoWM9H2vhOF4G8SlHW3FMvc7MzAzGhr4wnSuxqPSxjtgH4hGCOESx3cYQ4N9S03q7MTW7FhMwgVtNwOLuVo/ALa4/fiE3rS2jmibBgfCJ1gCFsyaLH8Qbji90BCRrzVgfxgYIHLtSsSApXxQE0dIUw6uM4ZfyEjRu+5UdgcJ6Mtz27durT35hXZLYQnxiGYuO9iC2yBsFTmzL4cOHB8JOeRFREkzkk3VO+dqmlRUnBogkrVWkzVHYUQ9CDA6M66i2HThwYCDs1DZZ3KK4ZnzYYYk1N24ygY8scOoD5aitUYiqfHGO5SjOnyZgAiZgAjeXgMXdzeW56UrTFzINl4BYqRPKw3Rj/LKWUJTgk7ijPCxVTDcuLCxUxbPOjuk8dlDKmhPrVx0kjuFV5vArplvt4b7Ki0WNDQZyCFCJnaZ4Ig2ilr4jDmX1JFzlYS3TmjrC5TQ1yTNTq3KRW5xWRsjJ+ikGWBMllHbu3Kkihj6pmzLb2ob4g310iEBZ1uKaS8Q4FkKmZ7G+Mk7UTZs0/R7Tq/9qa6xDbR5lgY1p7TcBEzABE1gbgXLFHV+e+UvYrpuAvpCxzrQJkmZuRJpuh4hf4kyNSohI3DHNilhBKCEOWJOF6EAcaSpTu26pJ1reJHgIj/XwHJ3aj8iMYjKmGeWX9QnBE0UV7cRhSRvFBFGK03q7uHYxCp4q0fIv5eGxzeIV+08ahJxElOLUNuIVhj861aO2ESeeiFj4RyeGhIk107OXL18ejClxMIYVopxpXJzSIw7VNoVVCZZ/abrX4i5S6fa/kpcNDI9Ud3rHmoAJmIAIlCvuWNg9xuYAgejjJ8JBmxEQZIiZlVwUAlFcUI6sURJ3iAgEFyKFHxbr45jq1JEeUdwpH2lG1UOcHKKRcnHkbYoWpRv1KXHHsSXRaUcnlqu2MrF0SaxIUBKmtX/NQ4hVttbJwRnhi2MDhjacNEVRZKA4tY280WrKM47ylE/CFKuZBJ/KWUq99FvpsSxKdLJhgz7RTqZm2fShKdtr165V4g5BrHFkHDT+8e+CGqhf4lLpY/32txPYkv992pmACZjAJARW/jafpNRpyHNjadfeNDRlWtuApUXTj21f+m3tlhAgLk6DxvAo0iR+2FWJMEEwsUNWTuIOIUKcnMpDXLCGq80hKGTZGrf9sRxNBzfFmAQOQkniN+bTDkTEDTsScWov/uYGEsIQODpShQ0J2pUs0UOaZh9UJtYuMVDbSN88ZoUwdstqilXn5Kkc4pt1EKY2IMoQs7QfYYfjSBXOs5Owg7dEOhZKWTy76mA3rpx46dmfHQT8DuuA4ygTMIEuAuVa7rhY/nVLxy90AehznL7UYcBUq8RHGxN2kyIw9CXOl7osQ6RXWViTZJUiXOJOIpLdoBIqhEk8RWsPIlBWtTYxQrk41Ym/Kx3xbU7tkHBRGt2FyvP169eru3ERPQgbrFYSN+xE1DRjbAsbRrgpQ32iL1jCZNmLOxg1lU1dTUucylQ5pKGftAUrGZszWD/HWPDMsS5Xr14lWXX+npionLYNG3EMlD5aByWAKZO0HOPSZmnU30UUouTB6a5ZpoSZ1rUbkwDvMDsTMAETmIBA2eKu/fSMCTCVmUVfyPQOwSLR0tbbU6dOVeJGYgzrnKw2pFdZzelRiTvSIPp27dqFt3JY3iT6JCyIkBjBH8N5jk51EtaVLuaJfk3Hxo0HxCNC2CHLMSkIXixkWMywMkqgceTI7t27B8WpLbQDix9HpeAnvaaOEWUHDx4cEsWR4fnz5ysLGUeoIIJkPYt9Yx0dmzyw0P0l335x7ty5qjzGhXpxbOjQmkae1TbEuCyGhOOw3jatn4whQpO2c/cvt1PwTB1ab0lebtVg/OiTxiy2lTRYAXXcDDeR2K2CgMXdKmA5qQmYQCRQ1rTsHaFrL9XndYVQewMBfemHoFYvogzrFlYmTfnFL3FEhaw5cUqWwqK4Y+1WFDOx/midGhXebJzS0bZoLWymG/UsK1IULErLUSbcgYogY30d6+UQO9TD2XJHjhwZWNqi9QtL2tGjRytxxq5bCTumMLnNoSlwOB5Ffacc6oOZxBLtiax5hiPTpQg1rGy0jTFArO7Zs6c6IFlWSdKLU7OcGIdf8UyP01aJX/IjcLHKzc3NDaaiserx99B1bA2WTqyK/F1ompi67MYgEN9h8d02RlYnMQET6DeBLfnFW5/JsNlZ7HtPSr9YXt/zm8WUPjB8ndRm757bf3MJcIsE14Uhak6cONFaOOIF6xPiCYHWnMIlE0Ls0qVLVX5EH1Y9HNOx5B2Vr0q0/EsCMx6XEuPb/IhBRDUCj40KzbWDbXlWE0b5WPYQb1j9VD6vDIQrQj2uu2uWjeXxwoULlbg7duzY4LaMZjo/jyDw21+l9MHl9al78/E1C0+PSNgejMX05MmTg0gswqdPnx4822MCJlAugbKmZbcx7bMs7p59Jou7cgfOPVs7AZ33hghBsGA1azqsYwiYLifLGGlk/cKPZVDWQZ673GpEncpBXCG64tpHxd2MT8qXVTGWByfdfBHDox+eV65cqbhyR+5K6WNe+5cJPPO3GkX1bqsfx/FhWdWB16RvO7NxnHKcxgRMYPMRKGta9n3vr0fgySdqv30m0EIASxRiDMuUzmhrSbZikKZQmcbUVOaKmQpPwO5orHsI4/379xfe23XqXnyH3dl+YPU61exiTcAENjmBssTd7jAN+7OfbPKhcfM3goDulOV+10mdLHfRajdpWSXkY23m4uJidbQNa/eamzhK6OOG9CG+wz4U3m0TVj7OOZYTFu1sJmACU0agrDV3/3wupbe9o0b873zTwNbb62f7TKBBgLVurFvDijfuFGqjiGoXKdOQbGLQ0SjNNH16Zq0hU4KTbnTpE6uRfX0+nzN4W3h3Pff3/G57+8jkXRGcy8gRRGfOnElnz57tSuo4EzCBQgiUZbl7a3757Q+XvD86X8gwuRvrRYC1bqwrm1TY0S52glKGhd3SKMESHpPsYF6vcd505T76SN3kfXmr7ITCjkJ0n/OOHTvqMu0zARMomkBZljuG6rHzKZ34WD1oLzyfD1h7S/1snwmYgAlMM4EXX8iXD2+tW/jD76c0V+96rSNW9nGw9d69e6tje7gpZJKNOyvX4hQmYALTRqAsyx10Zz+aUjDepa9+dtqYuz0mYAImMJrA1z5fx3G+3ex99fMqfJxNyG0oXH138eJFC7tVsHNSE9jsBMoTd/kk/fTQj+tx+fYPUpp/qH62zwRMwASmlQDvqgezpU7u4R/le+nqO5cVPM4nu8BnZmaq41AOHTo0ThanMQETKIRAedOyGpgv3Z/St76np5Qe+U5K93+6frbPBEzABKaJAMLuk5+pW/SFjw+/w+oY+0zABEygk0C54u7lfM/mvfn4gJ9erwF8Lq/F+/qDKb3pzXWYfSZgAiZwKwmwxo7lI8wyyB2+O6XL+YaK179BIf40ARMwgbEJlCvuQMBmirkPDws8wr/7zZTuy5a9rbfxZGcCJmACG0+A407YFfvAl4frRtg99vPhTRXDKfxkAiZgAp0EyhZ3dB0L3lc+NbyORUju2ZXSwXtTuiu/TN/57pRuz9dMvTFb9fLxGNXPa16b8gWaKd9LpRz+NAETMIFuAvnMw1du3Ehb/vff/P55eennpRdT+tc/UuJKMW6e4IDix3/36nK++ImUvvGwLXavJuMQEzCBVRAoX9wJxuN5k8UDR1P6swL8aQImYAJTQuC9uR1sBPtI/s+mnQmYgAmskUB5u2VHAblnJqU/5v9FXzo3fNDxqPQONwETMIH1JsCh65xj94f/WNitN2uXbwI9ItAfy11zUJki+eVCSr9eTOlPv0/p6SdTevavKT3VTOhnEzABE1gjgTty/ndtS2nbXSnduTMl7ords29NN0+ssUXObgImUDCB/oq7ggfVXTMBEzABEzABE+gvgf5My/Z3jN1zEzABEzABEzCBHhGwuOvRYLurJmACJmACJmAC5ROwuCt/jN1DEzABEzABEzCBHhGwuOvRYLurJmACJmACJmAC5ROwuCt/jN1DEzABEzABEzCBHhGwuOvRYLurJmACJmACJmAC5ROwuCt/jN1DEzABEzABEzCBHhGwuOvRYLurJmACJmACJmAC5ROwuCt/jN1DEzABEzABEzCBHhGwuOvRYLurJmACJmACJmAC5ROwuCt/jN1DEzABEzABEzCBHhGwuOvRYLurJmACJmACJmAC5ROwuCt/jN1DEzABEzABEzCBHhGwuOvRYLurJmACJmACJmAC5ROwuCt/jN1DEzABEzABEzCBHhGwuOvRYLurJmACJmACJmAC5RP4PxG6kAfLb6a4AAAAAElFTkSuQmCC" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Combining GROUP BY with other CLAUSES\n", - "\n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *total revenue* per *year*, in *recent* years?" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Year</th>\n", - " <th>total_revenue</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>2020</td>\n", - " <td>1025.19</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>2019</td>\n", - " <td>2665.93</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>2018</td>\n", - " <td>2675.12</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>2017</td>\n", - " <td>2086.58</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>2016</td>\n", - " <td>11211.65</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Year total_revenue\n", - "0 2020 1025.19\n", - "1 2019 2665.93\n", - "2 2018 2675.12\n", - "3 2017 2086.58\n", - "4 2016 11211.65" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# recent means 5 years\n", - "qry(\"\"\"\n", - "SELECT year, SUM(revenue) AS total_revenue\n", - "FROM movies\n", - "GROUP BY Year\n", - "ORDER BY Year DESC\n", - "LIMIT 5\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which 5 *directors* have had the *most number of movies* earning *over 200M dollars*?" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>David Yates</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Michael Bay</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Francis Lawrence</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Anthony Russo</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>Zack Snyder</td>\n", - " <td>3</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director count\n", - "0 David Yates 5\n", - "1 Michael Bay 4\n", - "2 Francis Lawrence 4\n", - "3 Anthony Russo 4\n", - "4 Zack Snyder 3" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, COUNT(title) AS count\n", - "FROM movies\n", - "WHERE revenue > 200\n", - "GROUP BY director\n", - "ORDER BY count DESC\n", - "limit 5\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *three* of the *directors* have the *greatest average rating*?" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>avg_rating</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Thomas Kail</td>\n", - " <td>8.6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Sudha Kongara</td>\n", - " <td>8.6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Olivier Nakache</td>\n", - " <td>8.6</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director avg_rating\n", - "0 Thomas Kail 8.6\n", - "1 Sudha Kongara 8.6\n", - "2 Olivier Nakache 8.6" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, AVG(rating) AS avg_rating\n", - "FROM movies\n", - "GROUP BY director\n", - "ORDER BY avg_rating DESC\n", - "LIMIT 3\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Why is the above question maybe not the best to ask?" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "# These directors could have made just 1 good movie.\n", - "# We would want to consider if the director has multiple great movies, instead of just one." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *five* of the *directors* have the *greatest average rating* over at *least three movies*?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Can you solve this question just using `GROUPBY` and `WHERE`?\n", - "\n", - "Answer: We cannot use WHERE clause on aggregates because that data doesn't exist in the original table" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [], - "source": [ - "# This query wouldn't work\n", - "\n", - "# qry(\"\"\"\n", - "# SELECT director, AVG(rating) AS avg_rating, COUNT(*) as count\n", - "# FROM movies\n", - "# WHERE count >= 3\n", - "# GROUP BY director\n", - "# ORDER BY avg_rating DESC\n", - "# LIMIT 3\n", - "# \"\"\")" - ] - }, - { - "attachments": { - "Screen%20Shot%202022-04-21%20at%2011.34.25%20AM.png": { - "image/png": "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eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjk3MzwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41Njg8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KnHttSQAAQABJREFUeAHsXQeYFFXWvT1kyTnnnCULohINIIg5Z13TGnbXtOqa3TXngNkfxYSigqCiIoKAgATJmSHnJDlN//dUzeuq7ume6Zmpnulw7jc19XK9OtXV/c67993n86sIhQgQASJABIgAESACRIAIEAEiQASIABHIgkBalhQmEAEiQASIABEgAkSACBABIkAEiAARIAIWAiTN/CAQASJABIgAESACRIAIEAEiQASIABGIgABJcwRgmEwEiAARIAJEgAgQASJABIgAESACRICkmZ8BIkAEiAARIAJEgAgQASJABIgAESACERAgaY4ADJOJABEgAkSACBABIkAEiAARIAJEgAiQNPMzQASIABEgAkSACBABIkAEiAARIAJEIAICJM0RgGEyESACRIAIEAEiQASIABEgAkSACBABkmZ+BogAESACRIAIEAEiQASIABEgAkSACERAgKQ5AjBMJgJEgAgQASJABIgAESACRIAIEAEiQNLMzwARIAJEgAgQASJABIgAESACRIAIEIEICJA0RwCGyUSACBABIkAEiAARIAJEgAgQASJABEia+RkgAkSACBABIkAEiAARIAJEgAgQASIQAQGS5gjAMJkIEAEiQASIABEgAkSACBABIkAEiABJMz8DRIAIEAEiQASIABEgAkSACBABIkAE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uEiAotlFcDyNBEiABEiABEiABEiABEiABEjA+gQomq0/xuwhCZAACZAACZAACZAACZAACZCAiwQoml0Ex9NIgARIgARIgARIgARIgARIgASsT4Ci2fpjzB6SAAmQAAmQAAmQAAmQAAmQAAm4SICi2UVwPI0ESIAESIAESIAESIAESIAESMD6BCiarT/G7CEJkAAJkAAJkAAJkAAJkAAJkICLBCiaXQTH00iABEiABEiABEiABEiABEiABKxPgKLZ+mPMHpIACZAACZAACZAACZAACZAACbhIgKLZRXA8jQRIgARIgARIgARIgARIgARIwPoEKJqtP8bsIQmQAAmQAAmQAAmQAAmQAAmQgIsEKJpdBMfTSIAESIAESIAESIAESIAESIAErE+Aotn6Y8wekgAJkAAJkAAJkAAJkAAJkAAJuEiAotlFcDyNBEiABEiABEiABEiABEiABEjA+gQomq0/xuwhCZAACZAACZAACZAACZAACZCAiwQoml0Ex9NIgARIgARIgARIgARIgARIgASsT4Ci2fpjzB6SAAmQAAmQAAmQAAmQAAmQAAm4SICi2UVwPI0ESIAESIAESIAESIAESIAESMD6BCiarT/G7CEJkAAJkAAJkAAJkAAJkAAJkICLBCiaXQTH00iABEiABEiABEiABEiABEiABKxPgKLZ+mPMHpIACZAACZAACZAACZAACZAACbhIgKLZRXA8jQRIgARIgARIgARIgARIgARIwPoEKJqtP8bsIQmQAAmQAAmQAAmQAAmQAAmQgIsEKJpdBMfTSIAESIAESIAESIAESIAESIAErE+Aotn6Y8wekgAJkAAJkAAJkAAJkAAJkAAJuEiAotlFcDyNBEiABEiABEiABEiABEiABEjA+gQomq0/xuwhCZAACZAACZAACZAACZAACZCAiwQoml0Ex9NIgARIgARIgARIgARIgARIgASsT4Ci2fpjzB6SAAmQAAmQAAmQAAmQAAmQAAm4SICi2UVwPI0ESIAESIAESIAESIAESIAESMD6BCiarT/G7CEJkAAJkAAJkAAJkAAJkAAJkICLBCiaXQTH00iABEiABEiABEiABEiABEiABKxPgKLZ+mPMHpIACZAACZAACZAACZAACZAACbhIgKLZRXA8jQRIgARIgARIgARIgARIgARIwPoEKJqtP8bsIQmQAAmQAAmQAAmQAAmQAAmQgIsEKJpdBMfTSIAESIAESIAESIAESIAESIAErE+Aotn6Y8wekgAJkAAJkAAJkAAJ+BiBsWPHws/Pz+t/3sZuBAYPPfQQoqOjvY2C108DAb8YraThfJ5KAiRAAiRAAiRAAiRAAiRgQAJt27bFvHnzDNgy32lSwYIFsXnzZuTOndt3Om3BnlI0W3BQ2SUSIAESIAESIAESIAESuHLlCmrUqIGdO3cShhcIBAUFYfXq1WoMvHB5XtKNBOie7UaYrIoESIAESIAESIAESIAEjEIgNDQU3377LbJmzWqUJvlUO8aNG0fBbJERp2i2yECyGyRAAiRAAiRAAiRAAiSQkEDJkiUxY8YMNbc54T6ue45Ap06d0LVrV89dgDWnKwGK5nTFzYuRAAmQAAmQAAmQAAmQQPoSaNmyJQYMGJC+F/Xhq1WuXBmTJk3yYQLW6zrnNFtvTNkjEiABEiABEiABEiABEohHQKI3P/LII/j111/jbeeKewmEh4erwF8RERHurZi1eZUALc1exc+LkwAJkAAJkAAJkAAJkIDnCWTIkAGzZ89G4cKFPX8xH72Cv78/Zs2aBQpm670BKJqtN6bsEQmQAAmQAAmQAAmQAAkkIpAzZ0588803CA4OTrSPG9JOYMiQIcqan/aaWIPRCFA0G21E2B4SIAESIAESIAESIAES8BCBatWqYcKECR6q3Xerbd68Od58803fBWDxnnNOs8UHmN0jARIgARIgARIgARIggYQEXnzxRXz++ecJN3PdBQKRkZHYtGkTsmXL5sLZPMUMBCiazTBKbCMJkAAJkAAJkAAJkAAJuJHAzZs3UadOHSX23Fitz1UVEhKCDRs2oHz58j7Xd1/qMN2zfWm02VcSIAESIAESIAESIAES0AjIvGaZ3yzznFlcJyDWegpm1/mZ5UyKZrOMFNtJAiRAAiRAAiRAAiRAAm4kIJG0JaK2RNZmST2BV155BR06dEj9iTzDdAQomk03ZGwwCZAACZAACZAACZAACbiHQKNGjTB06FD3VOZDtYhr+8iRI32ox77dVc5p9u3xZ+9JgARIgARIgARIgAR8nEBMTAxat26NRYsW+TgJ57qfL18+bN68GfLK4hsEKJp9Y5zZSxIgARIgARIgARIgARJIksClS5dQvXp17N27N8ljuAMIDAzEihUrVBA18vAdAnTP9p2xZk9JgARIgARIgARIgARIwCGBrFmz4ttvv0VoaKjD/dwYS2D06NEUzD74ZqBo9sFBZ5dJgARIgARIgARIgARIICGBsmXLYurUqQk3c/0eAQn61atXL/LwQQJ0z/bBQWeXSYAESIAESIAESIAESCApAn379oVYVFniCEhaKcnHLHmZWXyPAEWz7405e0wCJEACJEACJEACJEACSRK4c+cOJKr2qlWrkjzGl3Zky5YNmzZtQmRkpC91m321I0D3bDsYXCQBEiABEiABEiABEiABXycQEBCAuXPnokCBAr6OAn5+fvjyyy8pmH38nUDR7ONvAHafBEiABEiABEiABEiABBISyJMnD+bPn4+goKCEu3xq/a233kLz5s19qs/sbGICdM9OzIRbSIAESIAESIAESIAESIAENAKTJk1Cjx49fJJFkyZNsHTpUvj7087ok28Au05TNNvB4CIJkAAJkAAJkAAJkAAJkEB8Ah07dsTMmTPjb7T4WkREBDZv3ozw8HCL95Tdc4YARbMzlHgMCZAACZAACZAACZAACfgogevXr6NWrVrYtm2bTxDImDEj1q1bh8qVK/tEf9nJlAnQ1yBlRjyCBEiABEiABEiABEiABHyWQKZMmbBw4UJkz57dJxiISzoFs08MtdOdpGh2GhUPJAESIAESIAESIAESIAHfJFC0aFHMmjXL8vN7u3fvjk6dOvnmILPXSRKgaE4SDXeQAAmQAAmQAAmQAAmQAAnoBJo2bYp33nlHX7Xca40aNfDRRx9Zrl/sUNoJcE5zKhheuXIFp0+fTvGMfPnyQdxYzFouX76MM2fO2JpfrFgx2zIXSIAESIAESIAESIAEfJdATEyMSsG0ZMkSS0HInTu3CvxVsGBBS/WLnXEPAYrmVHCcM2cO2rdvn+IZEpY+MjISvXr1UiH6zRamfurUqejSpYutn7dv34YkuZciDw7Onj1r21ekSBGV9N22gQskQAIkQAIkQAIkQAKWJnDhwgVUq1YNBw4csEQ/M2TIgGXLlqFBgwaW6A874X4CdM92P1PcvXsXe/fuVaK5devWHriC96pcsGABZE6L/nfr1i3vNYZXJgESIAESIAESIAESSHcCYWFhKjBYSEhIul/bExccPnw4BbMnwFqoTormNAxm4cKFUb16ddtf+fLlEwVH+O677zB9+vQ0XIWnkgAJkAAJkAAJkAAJ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1nzoOmhra6kGDRoYCq5VTxXjzJkzG4fLli1DxYoVDYVa3bWtba/U8qwKsbWeuWfPnsiWLZvVBE6ePIn3338fAwcOxM6dO9GpU6eYc54mNICCrq+2RBV83S96zZo1VhY/SYAESIAESIAESIAESMAgkFzW3qFDhyarlZu3P7gIUGn20/3U9ROWaATsDRs2WIe48847DRfrjh073uIuokpu37598eeffyJLliwxdXRbKV23rIHHrL3lNEK3JXo9DTj2xBNPWFmGkr1o0SKUL18+Jk8TOnn9+OOPUKXaW1G3cw3Xr0o7hQRIgARIgARIgARIgAQSIpDU64rbtWtneHAm1C+eJwFPCdhk/Wvyh7TztLdBWE63j9K9nA8cOAB16S5VqpSxbjm+oZ4+fRr79u2DrpVWJVs3atef+EQt2Lr1la5zLleuXIw1Or46CZ3TyODqep46dWrkzp07RplPqB7PkwAJkAAJkAAJkAAJhB4BXWL4zTff+HXgGrlbPSCdvS39ekE2HhIEqDSHxG3mIEmABEiABEiABEiABEggeQlogFv1uFy9erVfOqKBc1euXBkT38cvF2GjIUmA7tkheds5aBIgARIgARIgARIgARJIWgIa4FaX+eXJk8cvFx4zZgwVZr+QZaNUmvkdIAESIAESIAESIAESIAESSBICuqRQ4/BYMXp8dVHdjaZ79+6+ao7tkIALASrNLjh4QAIkQAIkQAIkQAIkQAIk4E8CzZo1w3vvveezSzRu3NjYQcZnDbIhEnAjwDXNbkB4SAIkQAIkQAIkQAIkQAIk4H8Cuv3pzz//fFsX0kC669atM4Ld3lZDrEwC8RCg0hwPHJ4iARIgARIgARIgARIgARLwD4Hz58+jTp062L59e6IukCZNGoSHh6NBgwaJqs9KJOApAbpne0qK5UiABEiABEiABEiABEiABHxGIEuWLIalOXPmzIlq85NPPqHCnChyrOQtASrN3hJjeRIgARIgARIgARIgARIgAZ8QqFChAsaNG+d1Ww899BCef/55r+uxAgkkhgDdsxNDjXVIgARIgARIgARIgARIgAR8RmDAgAH46KOPPGqvatWqWLFiBTJmzOhReRYigdslQKX5dgmyPgmQAAmQAAmQAAmQAAmQwG0RuHnzJu6++24sXLgw3nayZ8+OtWvXolSpUvGW40kS8CUBumf7kibbIgES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JEACJEACJEACJEACJEACJBA8BKg0B8+95EhIgARIgARIgARIgARIgARIgAR8TIBKs4+BsjkSIAESIAESIAESIAESIAESIIHgIUClOXjuJUdCAiRAAiRAAiRAAiRAAiRAAiTgYwJUmn0MlM2RAAmQAAmQAAmQAAmQAAmQAAkEDwEqzcFzLzkSEiABEiABEiABEiABEiABEiABHxOg0uxjoGyOBEiABEiABEiABEiABEiABEggeAhQaQ6ee8mRkAAJkAAJkAAJkAAJkAAJkAAJ+JgAlWYfA2VzJEACJEACJEACJEACJEACJEACwUOASnPw3EuOhARIgARIgARIgARIgARIgARIwMcEqDT7GCibIwESIAESIAESIAESIAESIAESCB4CVJqD515yJCRAAiRAAiRAAiRAAiRAAiRAAj4mQKXZx0DZHAmQAAmQAAmQAAmQAAmQAAmQQPAQoNIcPPeSIyEBEiABEiABEiABEiABEiABEvAxASrNPgbK5kiABEiABEiABEiABEiABEiABIKHAJXm4LmXHAkJkAAJkAAJkAAJkAAJkAAJkICPCVBp9jFQNkcCJEACJEACJEACJEACJEACJBA8BKg0B8+95EhIgARIgARIgARIgARIgARIgAR8TIBKs4+BsjkSIAESIAESIAESIAESIAESIIHgIUClOXjuJUdCAiRAAiRAAiRAAiRAAiRAAiTgYwL/B+i/PR8nqu1jAAAAAElFTkSuQmCC" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Need filtering BEFORE and AFTER the GROUP operations\n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# WHERE vs. HAVING\n", - "\n", - "* WHERE: filter rows in original table\n", - "* HAVING: filter groups" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *five* directors *having* at least 3 movies score the *greatest average rating* ?" - ] - }, - { - "attachments": { - "Screen%20Shot%202022-04-21%20at%2011.39.17%20AM.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>avg_rating</th>\n", - " <th>count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Christopher Nolan</td>\n", - " <td>8.533333</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Pete Docter</td>\n", - " <td>8.200000</td>\n", - " <td>3</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Anthony Russo</td>\n", - " <td>8.125000</td>\n", - " <td>4</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director avg_rating count\n", - "0 Christopher Nolan 8.533333 6\n", - "1 Pete Docter 8.200000 3\n", - "2 Anthony Russo 8.125000 4" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, AVG(rating) AS avg_rating, COUNT(*) as count\n", - "FROM movies\n", - "GROUP BY director\n", - "HAVING count >= 3\n", - "ORDER BY avg_rating DESC\n", - "LIMIT 3\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *directors* have had *more than 3 movies* that have been *since 2010*?" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Anthony Russo</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Antoine Fuqua</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Christopher Nolan</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>David O. Russell</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>David Yates</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>5</th>\n", - " <td>Denis Villeneuve</td>\n", - " <td>6</td>\n", - " </tr>\n", - " <tr>\n", - " <th>6</th>\n", - " <td>James Wan</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>7</th>\n", - " <td>M. Night Shyamalan</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>8</th>\n", - " <td>Martin Scorsese</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>9</th>\n", - " <td>Michael Bay</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>10</th>\n", - " <td>Mike Flanagan</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>11</th>\n", - " <td>Paul Feig</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>12</th>\n", - " <td>Paul W.S. Anderson</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>13</th>\n", - " <td>Peter Berg</td>\n", - " <td>4</td>\n", - " </tr>\n", - " <tr>\n", - " <th>14</th>\n", - " <td>Ridley Scott</td>\n", - " <td>5</td>\n", - " </tr>\n", - " <tr>\n", - " <th>15</th>\n", - " <td>Woody Allen</td>\n", - " <td>4</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director count\n", - "0 Anthony Russo 4\n", - "1 Antoine Fuqua 4\n", - "2 Christopher Nolan 4\n", - "3 David O. Russell 4\n", - "4 David Yates 4\n", - "5 Denis Villeneuve 6\n", - "6 James Wan 4\n", - "7 M. Night Shyamalan 4\n", - "8 Martin Scorsese 5\n", - "9 Michael Bay 4\n", - "10 Mike Flanagan 4\n", - "11 Paul Feig 4\n", - "12 Paul W.S. Anderson 5\n", - "13 Peter Berg 4\n", - "14 Ridley Scott 5\n", - "15 Woody Allen 4" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, COUNT(title) AS count\n", - "FROM movies\n", - "WHERE year >= 2010\n", - "GROUP BY director\n", - "HAVING count > 3\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *directors* have more than *two* movies with runtimes under *100* minutes" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Director</th>\n", - " <th>count</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>Mike Flanagan</td>\n", - " <td>3</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>Nicholas Stoller</td>\n", - " <td>3</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>Wes Anderson</td>\n", - " <td>3</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>Woody Allen</td>\n", - " <td>4</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "</div>" - ], - "text/plain": [ - " Director count\n", - "0 Mike Flanagan 3\n", - "1 Nicholas Stoller 3\n", - "2 Wes Anderson 3\n", - "3 Woody Allen 4" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "qry(\"\"\"\n", - "SELECT director, COUNT(title) AS count\n", - "FROM movies\n", - "WHERE runtime < 100\n", - "GROUP BY director\n", - "HAVING count > 2\n", - "\"\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [], - "source": [ - "# Don't forget to close the movies.db connection\n", - "c.close()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/lec_33_database2_template-checkpoint.ipynb b/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/lec_33_database2_template-checkpoint.ipynb deleted file mode 100644 index d775751..0000000 --- a/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/lec_33_database2_template-checkpoint.ipynb +++ /dev/null @@ -1,864 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# ignore this cell (it's just to make certain text red later, but you don't need to understand it).\n", - "from IPython.core.display import HTML\n", - "HTML('<style>em { color: red; }</style>')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# import statements\n", - "import sqlite3\n", - "import pandas as pd\n", - "import os" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Warmup: SQL query clauses\n", - "**Mandatory SQL clauses**\n", - "- SELECT: column, column, ... or *\n", - "- FROM: table\n", - "\n", - "**Optional SQL clauses**\n", - "- WHERE: boolean expression (if row has ....)\n", - " - can use AND, OR, NOT\n", - "- ORDER BY column (ASC, DESC)\n", - "- LIMIT: num rows" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# open up the movies database\n", - "movies_path = \"movies.db\"\n", - "assert os.path.exists(movies_path)\n", - "c = sqlite3.connect(movies_path)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# what are the table names?\n", - "df = ???\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# what are the data types?\n", - "print()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# what is all our data?\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# this function allows to type less for each query\n", - "def qry(sql, conn = c):\n", - " return pd.read_sql(sql, conn)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Sample query format:\n", - "\n", - "```\n", - "SELECT\n", - "FROM movies\n", - "WHERE\n", - "ORDER BY\n", - "LIMIT\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# call qry ....copy/paste the query from above\n", - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What's the *Title* of the movie with the highest *Rating*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = qry(\"\"\"\n", - "\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *Director* made the movie with the shortest *Runtime*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = qry(\"\"\"\n", - "\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What was the *Director* and *Title* of the movie with the largest *Revenue*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *Title* of the movie with the highest *Revenue* in *Year* 2016?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = qry(\"\"\"\n", - "\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df.iloc[0][\"Title\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *3 movies* had the highest *Revenue* in the *Year* 2016?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = qry(\"\"\"\n", - "\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Extract revenue column and convert to list\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Lecture 33: Database 2\n", - "Learning Objectives:\n", - "- Use the AS command to rename a column or a calculation\n", - "- Use SQL Aggregate functions to summarize database columns: \n", - " - SUM, AVG, COUNT, MIN, MAX, DISTINCT\n", - "- Use the GROUP BY command to place database rows into buckets.\n", - "- Use the HAVING command to apply conditions to groups." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *3 movies* have the highest *rating-to-revenue ratios*?\n", - "\n", - "The `AS` clause lets us rename a column or a calcuation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Aggregate Queries\n", - "\n", - "```\n", - "SUM, AVG, COUNT, MIN, MAX, DISTINCT\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many *rows of movies* are there?\n", - "Note: when we want to count the number of rows, we use COUNT(*)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many *directors* are there?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# This doesn't feel correct - it counts duplicates for director names!\n", - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Use COUNT(DISTINCT columname) " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the total *Revenue* of *all the movies*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average rating* across *all movies*?\n", - "\n", - "* v1: with `SUM` and `COUNT`\n", - "* v2: with `AVG`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# v1\n", - "df = qry(\"\"\"\n", - "\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df.iloc[0][0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# v2\n", - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average revenue* and *average runtime* of *all the movies*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average revenue* for a *Ridley Scott* movie?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = qry(\"\"\"\n", - "\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df.iloc[0][0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### *How many movies* were there in *2016*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df.iloc[0][0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What *percentage* of the *total revenue* came from the *highest-revenue movie*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df = qry(\"\"\"\n", - "\n", - "\"\"\")\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "df.iloc[0][0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What *percentage* of the *revenue* came from the *highest-revenue movie* in *2016*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# GROUP BY Queries\n", - "\n", - "```sql\n", - "SELECT ???, ??? FROM Movies\n", - "GROUP BY ???\n", - "```\n", - "\n", - "Sample query format:\n", - "\n", - "```\n", - "SELECT \n", - "FROM movies\n", - "WHERE \n", - "GROUP BY \n", - "ORDER BY\n", - "LIMIT\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *total revenue* for each *year*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### *How many movies* were by each *director*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\") " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *average rating* for each *director*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### How many *unique directors* created a movie in each *year*" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "attachments": { - "Screen%20Shot%202022-04-21%20at%2011.37.27%20AM.png": { - "image/png": "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NUzMTSMBEiCBgARC67n79ttvZeFC0yG5jNa8eXNp394sE3TIPvzwQ/nhhx90N+G2qpk7rUWLFtKyZUupUaPsM85/99138txzz0lRUZGsX79esH/EEUfIMcccI8cdd5xcdNFFcvrpp5tp2goSlkdPLlq0yMlH95EX0pfV3n77bdm/f7+bvFWrVtK2bVt3P+0BLCnWuImX7dYtZrqTBt4+QyQQJgLbzPPdoJFXo40buFSZR4MhEiCBRASw/FgY7amnnoqYepf594tf/CIKixF6KedVpUqViBE7kQkTJkSMCIrKL9HOjh07Iv/zP/8TQfpkdSgsLIy8+eabibJzzw0fPjwqv2rVqkWMYHTPpxJYsGBBVF4o5+23355KFqnHnf48poYt+fXvknp6piCBXCOA51yf+Veey7XSs7wkQAIZIsBm2UTKt5znDh48KCtWrJDrr79eTjrpJFm1alXSHBcvXiynnHKKPP3004L0avAGNm3aVOrUqaOHnG1xcbH0799f7r33XqN6oLeCG7xuTz55qNN28GROzP/85z8ppkhD9LlFXib9OHrQg8FQaAlghRW1T82cdzQSIAESCECgWoA4OR+lfv368qc//SmlenTqZCYQjWNDhw6V0047Lc5Zkb1798rKlSsFTbkQa7AvvvhCrrjiCpk9e7YYj1nMtBB0P//5z2Xnzp3OeZT7xhtvlCuvvFKOP/54MZ485/j27dvl1VdflXHjxsn7779vVjk6IL/73e+c5tsnnnhC6tULPokvRNpvfvObmOWJd3Dfvn3y3//+N97piju+4nMv7/bx748XiSESyHECWDpPbfkiDXFLAiRAAokJZMhjWOGXtZtl0XRZXrObZf/1r38Fyg5NsXfeeSfcae7voYceipn2vffec+Mg/rHHHhsxwjBmXD2I/I34i0o3ZMgQPV1qazfLVq9e3U03d+7cUnETHXjppZfctHY+Fd4s28vcR22imleUqIg8RwLhIIDnXJ95PP80EiABEghAgM2yibVvuc6iKfXPf/6z9OrVy80HnrtYZoSRe7hr166OF84e0OGetALIf+zYsfK3v/3NHVRhhJfjMbSixQwOHuxNApxqE6sd384n5oXSeXBdsZdbw8ZemCESCCsB+zlfYz3/Ya0v60UCJJAWAhR3acGYOBM046qZgQgadLcvvviizJkzx9nH6Npp06bJ0Ucf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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Combining GROUP BY with other CLAUSES\n", - "\n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### What is the *total revenue* per *year*, in *recent* years?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# recent means 5 years\n", - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which 5 *directors* have had the *most number of movies* earning *over 200M dollars*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *three* of the *directors* have the *greatest average rating*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Why is the above question maybe not the best to ask?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# These directors could have made just 1 good movie.\n", - "# We would want to consider if the director has multiple great movies, instead of just one." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *five* of the *directors* have the *greatest average rating* over at *least three movies*?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Can you solve this question just using `GROUPBY` and `WHERE`?\n", - "\n", - "Answer: We cannot use WHERE clause on aggregates because that data doesn't exist in the original table" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# This query wouldn't work\n", - "\n", - "qry(\"\"\"\n", - "SELECT director, AVG(rating) AS avg_rating, COUNT(*) as count\n", - "FROM movies\n", - "WHERE count >= 3\n", - "GROUP BY director\n", - "ORDER BY avg_rating DESC\n", - "LIMIT 3\n", - "\"\"\")" - ] - }, - { - "attachments": { - "Screen%20Shot%202022-04-21%20at%2011.34.25%20AM.png": { - "image/png": "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eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjk3MzwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41Njg8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KnHttSQAAQABJREFUeAHsXQeYFFXWvT1kyTnnnCULohINIIg5Z13TGnbXtOqa3TXngNkfxYSigqCiIoKAgATJmSHnJDlN//dUzeuq7ume6Zmpnulw7jc19XK9OtXV/c67993n86sIhQgQASJABIgAESACRIAIEAEiQASIABHIgkBalhQmEAEiQASIABEgAkSACBABIkAEiAARIAIWAiTN/CAQASJABIgAESACRIAIEAEiQASIABGIgABJcwRgmEwEiAARIAJEgAgQASJABIgAESACRICkmZ8BIkAEiAARIAJEgAgQASJABIgAESACERAgaY4ADJOJABEgAkSACBABIkAEiAARIAJEgAiQNPMzQASIABEgAkSACBABIkAEiAARIAJEIAICJM0RgGEyESACRIAIEAEiQASIABEgAkSACBABkmZ+BogAESACRIAIEAEiQASIABEgAkSACERAgKQ5AjBMJgJEgAgQASJABIgAESACRIAIEAEiQNLMzwARIAJEgAgQASJABIgAESACRIAIEIEICJA0RwCGyUSACBABIkAEiAARIAJEgAgQASJABEia+RkgAkSACBABIkAEiAARIAJEgAgQASIQAQGS5gjAMJkIEAEiQASIABEgAkSACBABIkAEiABJMz8DRIAIEAEiQASIABEgAkSACBABIkAE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uEiAotlFcDyNBEiABEiABEiABEiABEiABEjA+gQomq0/xuwhCZAACZAACZAACZAACZAACZCAiwQoml0Ex9NIgARIgARIgARIgARIgARIgASsT4Ci2fpjzB6SAAmQAAmQAAmQAAmQAAmQAAm4SICi2UVwPI0ESIAESIAESIAESIAESIAESMD6BCiarT/G7CEJkAAJkAAJkAAJkAAJkAAJkICLBCiaXQTH00iABEiABEiABEiABEiABEiABKxPgKLZ+mPMHpIACZAACZAACZAACZAACZAACbhIgKLZRXA8jQRIgARIgARIgARIgARIgARIwPoEKJqtP8bsIQmQAAmQAAmQAAmQAAmQAAmQgIsEKJpdBMfTSIAESIAESIAESIAESIAESIAErE+Aotn6Y8wekgAJkAAJkAAJkAAJkAAJkAAJuEiAotlFcDyNBEiABEiABEiABEiABEiABEjA+gQomq0/xuwhCZAACZAACZAACZAACZAACZCAiwQoml0Ex9NIgARIgARIgARIgARIgARIgASsT4Ci2fpjzB6SAAmQAAmQAAmQAAmQAAmQAAm4SICi2UVwPI0ESIAESIAESIAESIAESIAESMD6BCiarT/G7CEJkAAJkAAJkAAJkAAJkAAJkICLBCiaXQTH00iABEiABEiABEiABEiABEiABKxPgKLZ+mPMHpIACZAACZAACZAACZAACZAACbhIgKLZRXA8jQRIgARIgARIgARIgARIgARIwPoEKJqtP8bsIQmQAAmQAAmQAAmQAAmQAAmQgIsEKJpdBMfTSIAESIAESIAESIAESIAESIAErE+Aotn6Y8wekgAJkAAJkAAJkAAJkAAJkAAJuEiAotlFcDyNBEiABEiABEiABEiABEiABEjA+gQomq0/xuwhCZAACZAACZAACZAACZAACZCAiwQoml0Ex9NIgARIgARIgARIgARIgARIgASsT4Ci2fpjzB6SAAmQAAmQAAmQAAmQAAmQAAm4SICi2UVwPI0ESIAESIAESIAESIAESIAESMD6BCiarT/G7CEJkAAJkAAJkAAJkAAJkAAJkICLBCiaXQTH00iABEiABEiABEiABEiABEiABKxPgKLZ+mPMHpIACZAACZAACZAACZAACZAACbhIgKLZRXA8jQRIgARIgARIgARIgARIgARIwPoEKJqtP8bsIQmQAAmQAAmQAAmQAAmQAAmQgIsEKJpdBMfTSIAESIAESIAESIAESIAESIAErE+Aotn6Y8wekgAJkAAJkAAJkAAJ+BiBsWPHws/Pz+t/3sZuBAYPPfQQoqOjvY2C108DAb8YraThfJ5KAiRAAiRAAiRAAiRAAiRgQAJt27bFvHnzDNgy32lSwYIFsXnzZuTOndt3Om3BnlI0W3BQ2SUSIAESIAESIAESIAESuHLlCmrUqIGdO3cShhcIBAUFYfXq1WoMvHB5XtKNBOie7UaYrIoESIAESIAESIAESIAEjEIgNDQU3377LbJmzWqUJvlUO8aNG0fBbJERp2i2yECyGyRAAiRAAiRAAiRAAiSQkEDJkiUxY8YMNbc54T6ue45Ap06d0LVrV89dgDWnKwGK5nTFzYuRAAmQAAmQAAmQAAmQQPoSaNmyJQYMGJC+F/Xhq1WuXBmTJk3yYQLW6zrnNFtvTNkjEiABEiABEiABEiABEohHQKI3P/LII/j111/jbeeKewmEh4erwF8RERHurZi1eZUALc1exc+LkwAJkAAJkAAJkAAJkIDnCWTIkAGzZ89G4cKFPX8xH72Cv78/Zs2aBQpm670BKJqtN6bsEQmQAAmQAAmQAAmQAAkkIpAzZ0588803CA4OTrSPG9JOYMiQIcqan/aaWIPRCFA0G21E2B4SIAESIAESIAESIAES8BCBatWqYcKECR6q3Xerbd68Od58803fBWDxnnNOs8UHmN0jARIgARIgARIgARIggYQEXnzxRXz++ecJN3PdBQKRkZHYtGkTsmXL5sLZPMUMBCiazTBKbCMJkAAJkAAJkAAJkAAJuJHAzZs3UadOHSX23Fitz1UVEhKCDRs2oHz58j7Xd1/qMN2zfWm02VcSIAESIAESIAESIAES0AjIvGaZ3yzznFlcJyDWegpm1/mZ5UyKZrOMFNtJAiRAAiRAAiRAAiRAAm4kIJG0JaK2RNZmST2BV155BR06dEj9iTzDdAQomk03ZGwwCZAACZAACZAACZAACbiHQKNGjTB06FD3VOZDtYhr+8iRI32ox77dVc5p9u3xZ+9JgARIgARIgARIgAR8nEBMTAxat26NRYsW+TgJ57qfL18+bN68GfLK4hsEKJp9Y5zZSxIgARIgARIgARIgARJIksClS5dQvXp17N27N8ljuAMIDAzEihUrVBA18vAdAnTP9p2xZk9JgARIgARIgARIgARIwCGBrFmz4ttvv0VoaKjD/dwYS2D06NEUzD74ZqBo9sFBZ5dJgARIgARIgARIgARIICGBsmXLYurUqQk3c/0eAQn61atXL/LwQQJ0z/bBQWeXSYAESIAESIAESIAESCApAn379oVYVFniCEhaKcnHLHmZWXyPAEWz7405e0wCJEACJEACJEACJEACSRK4c+cOJKr2qlWrkjzGl3Zky5YNmzZtQmRkpC91m321I0D3bDsYXCQBEiABEiABEiABEiABXycQEBCAuXPnokCBAr6OAn5+fvjyyy8pmH38nUDR7ONvAHafBEiABEiABEiABEiABBISyJMnD+bPn4+goKCEu3xq/a233kLz5s19qs/sbGICdM9OzIRbSIAESIAESIAESIAESIAENAKTJk1Cjx49fJJFkyZNsHTpUvj7087ok28Au05TNNvB4CIJkAAJkAAJkAAJkAAJkEB8Ah07dsTMmTPjb7T4WkREBDZv3ozw8HCL95Tdc4YARbMzlHgMCZAACZAACZAACZAACfgogevXr6NWrVrYtm2bTxDImDEj1q1bh8qVK/tEf9nJlAnQ1yBlRjyCBEiABEiABEiABEiABHyWQKZMmbBw4UJkz57dJxiISzoFs08MtdOdpGh2GhUPJAESIAESIAESIAESIAHfJFC0aFHMmjXL8vN7u3fvjk6dOvnmILPXSRKgaE4SDXeQAAmQAAmQAAmQAAmQAAnoBJo2bYp33nlHX7Xca40aNfDRRx9Zrl/sUNoJcE5zKhheuXIFp0+fTvGMfPnyQdxYzFouX76MM2fO2JpfrFgx2zIXSIAESIAESIAESIAEfJdATEyMSsG0ZMkSS0HInTu3CvxVsGBBS/WLnXEPAYrmVHCcM2cO2rdvn+IZEpY+MjISvXr1UiH6zRamfurUqejSpYutn7dv34YkuZciDw7Onj1r21ekSBGV9N22gQskQAIkQAIkQAIkQAKWJnDhwgVUq1YNBw4csEQ/M2TIgGXLlqFBgwaW6A874X4CdM92P1PcvXsXe/fuVaK5devWHriC96pcsGABZE6L/nfr1i3vNYZXJgESIAESIAESIAESSHcCYWFhKjBYSEhIul/bExccPnw4BbMnwFqoTormNAxm4cKFUb16ddtf+fLlEwVH+O677zB9+vQ0XIWnkgAJkAAJkAAJkAAJ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1nzoOmhra6kGDRoYCq5VTxXjzJkzG4fLli1DxYoVDYVa3bWtba/U8qwKsbWeuWfPnsiWLZvVBE6ePIn3338fAwcOxM6dO9GpU6eYc54mNICCrq+2RBV83S96zZo1VhY/SYAESIAESIAESIAESMAgkFzW3qFDhyarlZu3P7gIUGn20/3U9ROWaATsDRs2WIe48847DRfrjh073uIuokpu37598eeffyJLliwxdXRbKV23rIHHrL3lNEK3JXo9DTj2xBNPWFmGkr1o0SKUL18+Jk8TOnn9+OOPUKXaW1G3cw3Xr0o7hQRIgARIgARIgARIgAQSIpDU64rbtWtneHAm1C+eJwFPCdhk/Wvyh7TztLdBWE63j9K9nA8cOAB16S5VqpSxbjm+oZ4+fRr79u2DrpVWJVs3atef+EQt2Lr1la5zLleuXIw1Or46CZ3TyODqep46dWrkzp07RplPqB7PkwAJkAAJkAAJkAAJhB4BXWL4zTff+HXgGrlbPSCdvS39ekE2HhIEqDSHxG3mIEmABEiABEiABEiABEggeQlogFv1uFy9erVfOqKBc1euXBkT38cvF2GjIUmA7tkheds5aBIgARIgARIgARIgARJIWgIa4FaX+eXJk8cvFx4zZgwVZr+QZaNUmvkdIAESIAESIAESIAESIAESSBICuqRQ4/BYMXp8dVHdjaZ79+6+ao7tkIALASrNLjh4QAIkQAIkQAIkQAIkQAIk4E8CzZo1w3vvveezSzRu3NjYQcZnDbIhEnAjwDXNbkB4SAIkQAIkQAIkQAIkQAIk4H8Cuv3pzz//fFsX0kC669atM4Ld3lZDrEwC8RCg0hwPHJ4iARIgARIgARIgARIgARLwD4Hz58+jTp062L59e6IukCZNGoSHh6NBgwaJqs9KJOApAbpne0qK5UiABEiABEiABEiABEiABHxGIEuWLIalOXPmzIlq85NPPqHCnChyrOQtASrN3hJjeRIgARIgARIgARIgARIgAZ8QqFChAsaNG+d1Ww899BCef/55r+uxAgkkhgDdsxNDjXVIgARIgARIgARIgARIgAR8RmDAgAH46KOPPGqvatWqWLFiBTJmzOhReRYigdslQKX5dgmyPgmQAAmQAAmQAAmQAAmQwG0RuHnzJu6++24sXLgw3nayZ8+OtWvXolSpUvGW40kS8CUBumf7kibbIgES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JEACJEACJEACJEACJEACJBA8BKg0B8+95EhIgARIgARIgARIgARIgARIgAR8TIBKs4+BsjkSIAESIAESIAESIAESIAESIIHgIUClOXjuJUdCAiRAAiRAAiRAAiRAAiRAAiTgYwJUmn0MlM2RAAmQAAmQAAmQAAmQAAmQAAkEDwEqzcFzLzkSEiABEiABEiABEiABEiABEiABHxOg0uxjoGyOBEiABEiABEiABEiABEiABEggeAhQaQ6ee8mRkAAJkAAJkAAJkAAJkAAJkAAJ+JgAlWYfA2VzJEACJEACJEACJEACJEACJEACwUOASnPw3EuOhARIgARIgARIgARIgARIgARIwMcEqDT7GCibIwESIAESIAESIAESIAESIAESCB4CVJqD515yJCRAAiRAAiRAAiRAAiRAAiRAAj4mQKXZx0DZHAmQAAmQAAmQAAmQAAmQAAmQQPAQoNIcPPeSIyEBEiABEiABEiABEiABEiABEvAxASrNPgbK5kiABEiABEiABEiABEiABEiABIKHAJXm4LmXHAkJkAAJkAAJkAAJkAAJkAAJkICPCVBp9jFQNkcCJEACJEACJEACJEACJEACJBA8BKg0B8+95EhIgARIgARIgARIgARIgARIgAR8TIBKs4+BsjkSIAESIAESIAESIAESIAESIIHgIUClOXjuJUdCAiRAAiRAAiRAAiRAAiRAAiTgYwL/B+i/PR8nqu1jAAAAAElFTkSuQmCC" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Need filtering BEFORE and AFTER the GROUP operations\n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# WHERE vs. HAVING\n", - "\n", - "* WHERE: filter rows in original table\n", - "* HAVING: filter groups" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *five* directors *having* at least 3 movies score the *greatest average rating* ?" - ] - }, - { - "attachments": { - "Screen%20Shot%202022-04-21%20at%2011.39.17%20AM.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *directors* have had *more than 3 movies* that have been *since 2010*?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Which *directors* have more than *two* movies with runtimes under *100* minutes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "qry(\"\"\"\n", - "\n", - "\"\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Don't forget to close the movies.db connection\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.7" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/web3-checkpoint.ipynb b/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/web3-checkpoint.ipynb deleted file mode 100644 index 6c5ab1c..0000000 --- a/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/web3-checkpoint.ipynb +++ /dev/null @@ -1,1237 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Web 3\n", - "- HTML parsing using BeautifulSoup" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<style>.container { width:100% !important; }</style>" - ], - "text/plain": [ - "<IPython.core.display.HTML object>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.core.display import display, HTML\n", - "display(HTML(\"<style>.container { width:100% !important; }</style>\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import requests #For downloading the HTML content using HTTP GET request\n", - "from bs4 import BeautifulSoup #For parsing the HTML content and searching through the HTML\n", - "import os\n", - "import pandas as pd" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# STAGE 1: extract all state URLs from the states page\n", - "## Stage 1 pseudocode\n", - "1. Use requests module to send a GET request to https://simple.wikipedia.org/wiki/List_of_U.S._states\n", - "2. Don't forget to raise_for_status to ensure you are getting 200 OK status code\n", - "3. Explore what r.text gives you" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "url = \"https://simple.wikipedia.org/wiki/List_of_U.S._states\"\n", - "r = requests.get(url)\n", - "r.raise_for_status()\n", - "#print(r.text) #Uncomment this line to see the output" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "4. Check out what type you are getting from r.text" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "<class 'str'>\n" - ] - } - ], - "source": [ - "print(type(r.text))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "5. Create BeautifulSoup object by passing r.text, \"html.parser\" as arguments and capture return value into a variable called doc\n", - "6. Try prettify() method call --- still not that pretty, right?" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "doc = BeautifulSoup(r.text, \"html.parser\")\n", - "#print(doc.prettify()) #Uncomment this line to see the output" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "7. (Not a code step) Open \"https://simple.wikipedia.org/wiki/List_of_U.S._states\" on Google Chrome.\n", - " - Right click on one of the state pages\n", - " - Click on \"Inspect\" --- this opens developer tools\n", - " - This tool let's you explore the html source code\n", - " - Explore the \\<table\\> and sub tags like \\<th\\>, \\<tr\\>, \\<td\\>\n", - " - Let's go back to coding" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "7. Find all \"table\" elements in the document by using doc.find_all(...) function and capture return value into a variable \"tables\"\n", - " - explore the length of the value returned from find_all(...) function\n", - " - check out the type of the value returned from find_all(...) function\n", - "8. Add an assert to check that there is only one table - futuristic assert to make sure the html format hasn't changed on the website\n", - "9. Extract the first table into tbl variable\n", - " - explore type of tbl\n", - " - try printing the content of tb1 --- looks like just a string" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "<class 'bs4.element.ResultSet'>\n", - "<class 'bs4.element.Tag'>\n" - ] - } - ], - "source": [ - "tables = doc.find_all(\"table\")\n", - "print(len(tables)) # only one table on the states page!\n", - "print(type(tables))\n", - "#Futuristic assert to make sure the html format hasn't changed on the website \n", - "assert len(tables) == 1 \n", - "tbl = tables[0]\n", - "print(type(tbl))" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "#print(tbl) #Uncomment this line to see the output" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "10. Find all the tr elements by using tbl.find_all(...) function and capture return value into a variable tr.\n", - " - explore length of trs, type of trs\n", - " - Add an assert checking that length of trs is at least 50 (For 50 US states)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "52\n", - "<class 'bs4.element.ResultSet'>\n" - ] - } - ], - "source": [ - "trs = tbl.find_all(\"tr\")\n", - "print(len(trs))\n", - "print(type(trs))\n", - "assert len(trs) >= 50" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "11. Iterate over each item in trs (going to be a lengthy step!)\n", - " - print each item (tr tag)\n", - " - call tr.find(..) to find \"th\" elements --- this finds th element for every tr element.\n", - " - capture return value into a variable called th\n", - " - print th and explore what you are getting.\n", - " - find each hyperlinks within each th element: call th.find_all(\"a\") and capture return value into a variable called links\n", - " - explore length of links by printing it --- some of the states have 2 links; go back and explore why that is the case and figure out which link you want\n", - " - some have 0 links, skip over those entries!\n", - " - extract first of the hyperlinks into a variable called link\n", - " - print link to confirm you are able to extract the correct link\n", - " - explore type of link\n", - " - print link.get_text() method and get attrs of link by saying link.attrs\n", - " - capture link.get_text() into a variable state\n", - " - capture link.attrs into a variable state_url --- we need a full URL. Define a prefix variable holding \"https://simple.wikipedia.org\" and concatenate prefix + link.attrs\n", - " - create a new dictionary called state_links --- we are going to use this dict to track each state and its URL. Think carefully about where you have to create this empty dict.\n", - "\n", - "#### Congrats :) stage 1 is done" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'postal abbs.': 'https://simple.wikipedia.org/wiki/List_of_U.S._state_abbreviations',\n", - " 'Alabama': 'https://simple.wikipedia.org/wiki/Alabama',\n", - " 'Alaska': 'https://simple.wikipedia.org/wiki/Alaska',\n", - " 'Arizona': 'https://simple.wikipedia.org/wiki/Arizona',\n", - " 'Arkansas': 'https://simple.wikipedia.org/wiki/Arkansas',\n", - " 'California': 'https://simple.wikipedia.org/wiki/California',\n", - " 'Colorado': 'https://simple.wikipedia.org/wiki/Colorado',\n", - " 'Connecticut': 'https://simple.wikipedia.org/wiki/Connecticut',\n", - " 'Delaware': 'https://simple.wikipedia.org/wiki/Delaware',\n", - " 'Florida': 'https://simple.wikipedia.org/wiki/Florida',\n", - " 'Georgia': 'https://simple.wikipedia.org/wiki/Georgia_(U.S._state)',\n", - " 'Hawaii': 'https://simple.wikipedia.org/wiki/Hawaii',\n", - " 'Idaho': 'https://simple.wikipedia.org/wiki/Idaho',\n", - " 'Illinois': 'https://simple.wikipedia.org/wiki/Illinois',\n", - " 'Indiana': 'https://simple.wikipedia.org/wiki/Indiana',\n", - " 'Iowa': 'https://simple.wikipedia.org/wiki/Iowa',\n", - " 'Kansas': 'https://simple.wikipedia.org/wiki/Kansas',\n", - " 'Kentucky': 'https://simple.wikipedia.org/wiki/Kentucky',\n", - " 'Louisiana': 'https://simple.wikipedia.org/wiki/Louisiana',\n", - " 'Maine': 'https://simple.wikipedia.org/wiki/Maine',\n", - " 'Maryland': 'https://simple.wikipedia.org/wiki/Maryland',\n", - " 'Massachusetts': 'https://simple.wikipedia.org/wiki/Massachusetts',\n", - " 'Michigan': 'https://simple.wikipedia.org/wiki/Michigan',\n", - " 'Minnesota': 'https://simple.wikipedia.org/wiki/Minnesota',\n", - " 'Mississippi': 'https://simple.wikipedia.org/wiki/Mississippi',\n", - " 'Missouri': 'https://simple.wikipedia.org/wiki/Missouri',\n", - " 'Montana': 'https://simple.wikipedia.org/wiki/Montana',\n", - " 'Nebraska': 'https://simple.wikipedia.org/wiki/Nebraska',\n", - " 'Nevada': 'https://simple.wikipedia.org/wiki/Nevada',\n", - " 'New Hampshire': 'https://simple.wikipedia.org/wiki/New_Hampshire',\n", - " 'New Jersey': 'https://simple.wikipedia.org/wiki/New_Jersey',\n", - " 'New Mexico': 'https://simple.wikipedia.org/wiki/New_Mexico',\n", - " 'New York': 'https://simple.wikipedia.org/wiki/New_York_(state)',\n", - " 'North Carolina': 'https://simple.wikipedia.org/wiki/North_Carolina',\n", - " 'North Dakota': 'https://simple.wikipedia.org/wiki/North_Dakota',\n", - " 'Ohio': 'https://simple.wikipedia.org/wiki/Ohio',\n", - " 'Oklahoma': 'https://simple.wikipedia.org/wiki/Oklahoma',\n", - " 'Oregon': 'https://simple.wikipedia.org/wiki/Oregon',\n", - " 'Pennsylvania': 'https://simple.wikipedia.org/wiki/Pennsylvania',\n", - " 'Rhode Island': 'https://simple.wikipedia.org/wiki/Rhode_Island',\n", - " 'South Carolina': 'https://simple.wikipedia.org/wiki/South_Carolina',\n", - " 'South Dakota': 'https://simple.wikipedia.org/wiki/South_Dakota',\n", - " 'Tennessee': 'https://simple.wikipedia.org/wiki/Tennessee',\n", - " 'Texas': 'https://simple.wikipedia.org/wiki/Texas',\n", - " 'Utah': 'https://simple.wikipedia.org/wiki/Utah',\n", - " 'Vermont': 'https://simple.wikipedia.org/wiki/Vermont',\n", - " 'Virginia': 'https://simple.wikipedia.org/wiki/Virginia',\n", - " 'Washington': 'https://simple.wikipedia.org/wiki/Washington',\n", - " 'West Virginia': 'https://simple.wikipedia.org/wiki/West_Virginia',\n", - " 'Wisconsin': 'https://simple.wikipedia.org/wiki/Wisconsin',\n", - " 'Wyoming': 'https://simple.wikipedia.org/wiki/Wyoming'}" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "prefix = \"https://simple.wikipedia.org\"\n", - "state_links = {} #KEY: state name; VALUE: link to state page\n", - "\n", - "for tr in trs:\n", - " th = tr.find(\"th\")\n", - " links = th.find_all(\"a\")\n", - " #print(len(links)) \n", - " #print(th.get_text())\n", - " if len(links) == 0:\n", - " continue\n", - " link = links[0]\n", - " #print(type(link), link)\n", - " #print(link.get_text(), link.attrs) #link.attrs is a dict\n", - " state = link.get_text()\n", - " state_url = prefix + link.attrs[\"href\"]\n", - " state_links[state] = state_url\n", - " \n", - "state_links" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# STAGE 2: download the html page for each state\n", - "## Stage 2 pseudocode\n", - "1. Create a directory called \"html_files_for_states\". Make sure to use try except block to catch FileExistsError exception\n", - "2. Initially convert the keys of state_links dict into a list and work with just first 3 items in the list of keys\n", - "3. Iterate over each key (initially just use 3):\n", - " 1. If key is \"postal abbs.\", skip processing. What keyword allows you to skip current iteration of the loop?\n", - " 2. To create each state's html file name, concatenate the directory name \"html_files_for_states\" with current key and add a \".html\" to the end.\n", - " 3. Add the html file name into a new dictionary called \"state_files\". Think carefully about where you have to create this empty dict.\n", - " 4. Use requests module get(...) function call to download the contents of the state URL page.\n", - " 5. Open the state html file in write mode and write r.text into the state html file.\n", - " \n", - "#### Congrats :) stage 2 is done" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "html_files_for_states/Alabama.html\n", - "html_files_for_states/Alaska.html\n", - "html_files_for_states/Arizona.html\n", - "html_files_for_states/Arkansas.html\n", - "html_files_for_states/California.html\n", - "html_files_for_states/Colorado.html\n", - "html_files_for_states/Connecticut.html\n", - "html_files_for_states/Delaware.html\n", - "html_files_for_states/Florida.html\n", - "html_files_for_states/Georgia.html\n", - "html_files_for_states/Hawaii.html\n", - "html_files_for_states/Idaho.html\n", - "html_files_for_states/Illinois.html\n", - "html_files_for_states/Indiana.html\n", - "html_files_for_states/Iowa.html\n", - "html_files_for_states/Kansas.html\n", - "html_files_for_states/Kentucky.html\n", - "html_files_for_states/Louisiana.html\n", - "html_files_for_states/Maine.html\n", - "html_files_for_states/Maryland.html\n", - "html_files_for_states/Massachusetts.html\n", - "html_files_for_states/Michigan.html\n", - "html_files_for_states/Minnesota.html\n", - "html_files_for_states/Mississippi.html\n", - "html_files_for_states/Missouri.html\n", - "html_files_for_states/Montana.html\n", - "html_files_for_states/Nebraska.html\n", - "html_files_for_states/Nevada.html\n", - "html_files_for_states/New Hampshire.html\n", - "html_files_for_states/New Jersey.html\n", - "html_files_for_states/New Mexico.html\n", - "html_files_for_states/New York.html\n", - "html_files_for_states/North Carolina.html\n", - "html_files_for_states/North Dakota.html\n", - "html_files_for_states/Ohio.html\n", - "html_files_for_states/Oklahoma.html\n", - "html_files_for_states/Oregon.html\n", - "html_files_for_states/Pennsylvania.html\n", - "html_files_for_states/Rhode Island.html\n", - "html_files_for_states/South Carolina.html\n", - "html_files_for_states/South Dakota.html\n", - "html_files_for_states/Tennessee.html\n", - "html_files_for_states/Texas.html\n", - "html_files_for_states/Utah.html\n", - "html_files_for_states/Vermont.html\n", - "html_files_for_states/Virginia.html\n", - "html_files_for_states/Washington.html\n", - "html_files_for_states/West Virginia.html\n", - "html_files_for_states/Wisconsin.html\n", - "html_files_for_states/Wyoming.html\n" - ] - } - ], - "source": [ - "html_dir = \"html_files_for_states\"\n", - "state_files = {} #KEY: state; VALUE: state file\n", - "\n", - "try:\n", - " os.mkdir(html_dir)\n", - "except FileExistsError:\n", - " pass\n", - "\n", - "#for state in list(state_links.keys())[:3]: # Use this for initial testing\n", - "for state in state_links.keys():\n", - " if state == \"postal abbs.\":\n", - " continue\n", - " state_url = state_links[state]\n", - "\n", - " #html file name\n", - " state_file = os.path.join(html_dir, state + \".html\")\n", - " state_files[state] = state_file\n", - " \n", - " #Optimization: if state file already exists, you can perhaps skip downloading it again\n", - " if os.path.exists(state_file):\n", - " continue\n", - " \n", - " #Download\n", - " r = requests.get(state_url)\n", - " r.raise_for_status\n", - " print(state_file)\n", - " \n", - " #Save to a file\n", - " f = open(state_file, \"w\", encoding = \"utf-8\")\n", - " f.write(r.text)\n", - " f.close()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# STAGE 3: extract details from each state page\n", - "## Stage 3 pseudocode\n", - "1. Write a function state_stats. Input path to 1 state file. Output dict of stats for that state\n", - "2. Open state html file, read its content.\n", - "3. Create a BeautifulSoup object called doc.\n", - "4. doc.find_all(\"tr\") - capture return value into a variable called trs\n", - "5. Iterate over each tr element\n", - " 1. You can retrieve a pair of elements by saying: cells = tr.find_all([\"th\", \"td\"])\n", - " 2. Explore length of the cells. Notice that there are some entries have length > 2. Let's skip over those. \n", - " 3. Create a dict called stats, where key is the th element's text and the value is td element's text\n", - "6. Don't forget to return the stats dict\n", - "7. Call state_stats with state_files[\"Wisconsin\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WI state drink: Milk\n", - "WI state dance: Polka\n" - ] - } - ], - "source": [ - "def state_stats(path):\n", - " stats = {}\n", - " f = open(path, encoding = \"utf-8\")\n", - " html_string = f.read()\n", - " f.close()\n", - " \n", - " doc = BeautifulSoup(html_string, \"html.parser\")\n", - " trs = doc.find_all(\"tr\")\n", - " for tr in trs:\n", - " cells = tr.find_all([\"th\", \"td\"])\n", - " if len(cells) == 2:\n", - " key = cells[0].get_text()\n", - " value = cells[1].get_text()\n", - " stats[key] = value\n", - " return stats\n", - "\n", - "wi_stats = state_stats(state_files[\"Wisconsin\"])\n", - "print(\"WI state drink:\", wi_stats[\"Beverage\"])\n", - "print(\"WI state dance:\", wi_stats[\"Dance\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 3 pseudocode continued\n", - "- Iterate over all the state files, call state_stats function, and save the return value into a variable.\n", - "- Keep track of each state's stats in a dict called state_details\n", - "- Create a pandas DataFrame from the state_details dict\n", - "- Explore the DataFrame." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "states_details = {}\n", - "\n", - "for state in state_files.keys():\n", - " stats = state_stats(state_files[state])\n", - " states_details[state] = stats" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "<div>\n", - "<style scoped>\n", - " .dataframe tbody tr th:only-of-type {\n", - " vertical-align: middle;\n", - " }\n", - "\n", - " .dataframe tbody tr th {\n", - " vertical-align: top;\n", - " }\n", - "\n", - " .dataframe thead th {\n", - " text-align: right;\n", - " }\n", - "</style>\n", - "<table border=\"1\" class=\"dataframe\">\n", - " <thead>\n", - " <tr style=\"text-align: right;\">\n", - " <th></th>\n", - " <th>Alabama</th>\n", - " <th>Alaska</th>\n", - " <th>Arizona</th>\n", - " <th>Arkansas</th>\n", - " <th>California</th>\n", - " <th>Colorado</th>\n", - " <th>Connecticut</th>\n", - " <th>Delaware</th>\n", - " <th>Florida</th>\n", - " <th>Georgia</th>\n", - " <th>...</th>\n", - " <th>South Dakota</th>\n", - " <th>Tennessee</th>\n", - " <th>Texas</th>\n", - " <th>Utah</th>\n", - " <th>Vermont</th>\n", - " <th>Virginia</th>\n", - " <th>Washington</th>\n", - " <th>West Virginia</th>\n", - " <th>Wisconsin</th>\n", - " <th>Wyoming</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>Country</th>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>...</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " <td>United States</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Before statehood</th>\n", - " <td>Alabama Territory</td>\n", - " <td>Territory of Alaska</td>\n", - " <td>Arizona Territory</td>\n", - " <td>Arkansas Territory</td>\n", - " <td>Mexican Cession unorganized territory</td>\n", - " <td>NaN</td>\n", - " <td>Connecticut Colony</td>\n", - " <td>Delaware Colony, New Netherland, New Sweden</td>\n", - " <td>Florida Territory</td>\n", - " <td>Province of Georgia</td>\n", - " <td>...</td>\n", - " <td>Dakota Territory</td>\n", - " <td>Southwest Territory</td>\n", - " <td>Republic of Texas</td>\n", - " <td>Utah Territory</td>\n", - " <td>Vermont Republic</td>\n", - " <td>Colony of Virginia</td>\n", - " <td>Washington Territory</td>\n", - " <td>Part of Virginia</td>\n", - " <td>Wisconsin Territory</td>\n", - " <td>Wyoming Territory</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Admitted to the Union</th>\n", - " <td>December 14, 1819 (22nd)</td>\n", - " <td>January 3, 1959 (49th)</td>\n", - " <td>February 14, 1912 (48th)</td>\n", - " <td>June 15, 1836 (25th)</td>\n", - " <td>September 9, 1850 (31st)</td>\n", - " <td>August 1, 1876 (38th)</td>\n", - " <td>January 9, 1788 (5th)</td>\n", - " <td>December 7, 1787 (1st)</td>\n", - " <td>March 3, 1845 (27th)</td>\n", - " <td>January 2, 1788 (4th)</td>\n", - " <td>...</td>\n", - " <td>November 2, 1889 (39th or 40th)</td>\n", - " <td>June 1, 1796 (16th)</td>\n", - " <td>December 29, 1845 (28th)</td>\n", - " <td>January 4, 1896 (45th)</td>\n", - " <td>March 4, 1791 (14th)</td>\n", - " <td>June 25, 1788 (10th)</td>\n", - " <td>November 11, 1889 (42nd)</td>\n", - " <td>June 20, 1863 (35th)</td>\n", - " <td>May 29, 1848 (30th)</td>\n", - " <td>July 10, 1890 (44th)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Capital</th>\n", - " <td>Montgomery</td>\n", - " <td>Juneau</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>Sacramento[1]</td>\n", - " <td>NaN</td>\n", - " <td>Hartford[1]</td>\n", - " <td>Dover</td>\n", - " <td>Tallahassee[1]</td>\n", - " <td>NaN</td>\n", - " <td>...</td>\n", - " <td>Pierre</td>\n", - " <td>NaN</td>\n", - " <td>Austin</td>\n", - " <td>NaN</td>\n", - " <td>Montpelier</td>\n", - " <td>Richmond</td>\n", - " <td>Olympia</td>\n", - " <td>NaN</td>\n", - " <td>Madison</td>\n", - " <td>NaN</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Largest city</th>\n", - " <td>Birmingham</td>\n", - " <td>Anchorage</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>Los Angeles</td>\n", - " <td>NaN</td>\n", - " <td>Bridgeport</td>\n", - " <td>Wilmington</td>\n", - " <td>Jacksonville[5]</td>\n", - " <td>NaN</td>\n", - " <td>...</td>\n", - " <td>Sioux Falls</td>\n", - " <td>NaN</td>\n", - " <td>Houston</td>\n", - " <td>NaN</td>\n", - " <td>Burlington</td>\n", - " <td>Virginia Beach</td>\n", - " <td>Seattle</td>\n", - " <td>NaN</td>\n", - " <td>Milwaukee</td>\n", - " <td>NaN</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Largest cities (pop. over 50,000)</th>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>...</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>\\nAppleton\\nEau Claire\\nGreen Bay\\nJanesville\\...</td>\n", - " <td>NaN</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Smaller cities (pop. 15,000 to 50,000)</th>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>...</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>\\nBeaver Dam\\nBeloit\\nBrookfield\\nCudahy\\nDe P...</td>\n", - " <td>NaN</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Largest villages (pop. over 15,000)</th>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>...</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>\\nAshwaubenon\\nBellevue\\nCaledonia\\nFox Crossi...</td>\n", - " <td>NaN</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Highest elevation (Gannett Peak[2][3][4])</th>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>...</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>13,809 ft (4,209.1 m)</td>\n", - " </tr>\n", - " <tr>\n", - " <th>Lowest elevation (Belle Fourche River at South Dakota border[3][4])</th>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>...</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>3,101 ft (945 m)</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>327 rows × 50 columns</p>\n", - "</div>" - ], - "text/plain": [ - " Alabama \\\n", - "Country United States \n", - "Before statehood Alabama Territory \n", - "Admitted to the Union December 14, 1819 (22nd) \n", - "Capital Montgomery \n", - "Largest city Birmingham \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Alaska \\\n", - "Country United States \n", - "Before statehood Territory of Alaska \n", - "Admitted to the Union January 3, 1959 (49th) \n", - "Capital Juneau \n", - "Largest city Anchorage \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Arizona \\\n", - "Country United States \n", - "Before statehood Arizona Territory \n", - "Admitted to the Union February 14, 1912 (48th) \n", - "Capital NaN \n", - "Largest city NaN \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Arkansas \\\n", - "Country United States \n", - "Before statehood Arkansas Territory \n", - "Admitted to the Union June 15, 1836 (25th) \n", - "Capital NaN \n", - "Largest city NaN \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " California \\\n", - "Country United States \n", - "Before statehood Mexican Cession unorganized territory \n", - "Admitted to the Union September 9, 1850 (31st) \n", - "Capital Sacramento[1] \n", - "Largest city Los Angeles \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Colorado \\\n", - "Country United States \n", - "Before statehood NaN \n", - "Admitted to the Union August 1, 1876 (38th) \n", - "Capital NaN \n", - "Largest city NaN \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Connecticut \\\n", - "Country United States \n", - "Before statehood Connecticut Colony \n", - "Admitted to the Union January 9, 1788 (5th) \n", - "Capital Hartford[1] \n", - "Largest city Bridgeport \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Delaware \\\n", - "Country United States \n", - "Before statehood Delaware Colony, New Netherland, New Sweden \n", - "Admitted to the Union December 7, 1787 (1st) \n", - "Capital Dover \n", - "Largest city Wilmington \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Florida \\\n", - "Country United States \n", - "Before statehood Florida Territory \n", - "Admitted to the Union March 3, 1845 (27th) \n", - "Capital Tallahassee[1] \n", - "Largest city Jacksonville[5] \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Georgia \\\n", - "Country United States \n", - "Before statehood Province of Georgia \n", - "Admitted to the Union January 2, 1788 (4th) \n", - "Capital NaN \n", - "Largest city NaN \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " ... \\\n", - "Country ... \n", - "Before statehood ... \n", - "Admitted to the Union ... \n", - "Capital ... \n", - "Largest city ... \n", - "... ... \n", - "Largest cities (pop. over 50,000) ... \n", - "Smaller cities (pop. 15,000 to 50,000) ... \n", - "Largest villages (pop. over 15,000) ... \n", - "Highest elevation (Gannett Peak[2][3][4]) ... \n", - "Lowest elevation (Belle Fourche River at South ... ... \n", - "\n", - " South Dakota \\\n", - "Country United States \n", - "Before statehood Dakota Territory \n", - "Admitted to the Union November 2, 1889 (39th or 40th) \n", - "Capital Pierre \n", - "Largest city Sioux Falls \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Tennessee \\\n", - "Country United States \n", - "Before statehood Southwest Territory \n", - "Admitted to the Union June 1, 1796 (16th) \n", - "Capital NaN \n", - "Largest city NaN \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Texas \\\n", - "Country United States \n", - "Before statehood Republic of Texas \n", - "Admitted to the Union December 29, 1845 (28th) \n", - "Capital Austin \n", - "Largest city Houston \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Utah \\\n", - "Country United States \n", - "Before statehood Utah Territory \n", - "Admitted to the Union January 4, 1896 (45th) \n", - "Capital NaN \n", - "Largest city NaN \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Vermont \\\n", - "Country United States \n", - "Before statehood Vermont Republic \n", - "Admitted to the Union March 4, 1791 (14th) \n", - "Capital Montpelier \n", - "Largest city Burlington \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Virginia \\\n", - "Country United States \n", - "Before statehood Colony of Virginia \n", - "Admitted to the Union June 25, 1788 (10th) \n", - "Capital Richmond \n", - "Largest city Virginia Beach \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Washington \\\n", - "Country United States \n", - "Before statehood Washington Territory \n", - "Admitted to the Union November 11, 1889 (42nd) \n", - "Capital Olympia \n", - "Largest city Seattle \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " West Virginia \\\n", - "Country United States \n", - "Before statehood Part of Virginia \n", - "Admitted to the Union June 20, 1863 (35th) \n", - "Capital NaN \n", - "Largest city NaN \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Wisconsin \\\n", - "Country United States \n", - "Before statehood Wisconsin Territory \n", - "Admitted to the Union May 29, 1848 (30th) \n", - "Capital Madison \n", - "Largest city Milwaukee \n", - "... ... \n", - "Largest cities (pop. over 50,000) \\nAppleton\\nEau Claire\\nGreen Bay\\nJanesville\\... \n", - "Smaller cities (pop. 15,000 to 50,000) \\nBeaver Dam\\nBeloit\\nBrookfield\\nCudahy\\nDe P... \n", - "Largest villages (pop. over 15,000) \\nAshwaubenon\\nBellevue\\nCaledonia\\nFox Crossi... \n", - "Highest elevation (Gannett Peak[2][3][4]) NaN \n", - "Lowest elevation (Belle Fourche River at South ... NaN \n", - "\n", - " Wyoming \n", - "Country United States \n", - "Before statehood Wyoming Territory \n", - "Admitted to the Union July 10, 1890 (44th) \n", - "Capital NaN \n", - "Largest city NaN \n", - "... ... \n", - "Largest cities (pop. over 50,000) NaN \n", - "Smaller cities (pop. 15,000 to 50,000) NaN \n", - "Largest villages (pop. over 15,000) NaN \n", - "Highest elevation (Gannett Peak[2][3][4]) 13,809 ft (4,209.1 m) \n", - "Lowest elevation (Belle Fourche River at South ... 3,101 ft (945 m) \n", - "\n", - "[327 rows x 50 columns]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "states_df = pd.DataFrame(states_details)\n", - "states_df" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Alabama Montgomery\n", - "Alaska Juneau\n", - "Arizona NaN\n", - "Arkansas NaN\n", - "California Sacramento[1]\n", - "Colorado NaN\n", - "Connecticut Hartford[1]\n", - "Delaware Dover\n", - "Florida Tallahassee[1]\n", - "Georgia NaN\n", - "Hawaii NaN\n", - "Idaho NaN\n", - "Illinois NaN\n", - "Indiana NaN\n", - "Iowa NaN\n", - "Kansas Topeka\n", - "Kentucky Frankfort\n", - "Louisiana Baton Rouge\n", - "Maine Augusta\n", - "Maryland Annapolis\n", - "Massachusetts NaN\n", - "Michigan Lansing\n", - "Minnesota Saint Paul\n", - "Mississippi NaN\n", - "Missouri Jefferson City\n", - "Montana Helena\n", - "Nebraska Lincoln\n", - "Nevada Carson City\n", - "New Hampshire Concord\n", - "New Jersey Trenton\n", - "New Mexico Santa Fe\n", - "New York Albany\n", - "North Carolina Raleigh\n", - "North Dakota Bismarck\n", - "Ohio NaN\n", - "Oklahoma NaN\n", - "Oregon Salem\n", - "Pennsylvania Harrisburg\n", - "Rhode Island NaN\n", - "South Carolina Columbia\n", - "South Dakota Pierre\n", - "Tennessee NaN\n", - "Texas Austin\n", - "Utah NaN\n", - "Vermont Montpelier\n", - "Virginia Richmond\n", - "Washington Olympia\n", - "West Virginia NaN\n", - "Wisconsin Madison\n", - "Wyoming NaN\n", - "Name: Capital, dtype: object" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "states_df.loc[\"Capital\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Country United States\n", - "Before statehood Wisconsin Territory\n", - "Admitted to the Union May 29, 1848 (30th)\n", - "Capital Madison\n", - "Largest city Milwaukee\n", - " ... \n", - "Largest cities (pop. over 50,000) \\nAppleton\\nEau Claire\\nGreen Bay\\nJanesville\\...\n", - "Smaller cities (pop. 15,000 to 50,000) \\nBeaver Dam\\nBeloit\\nBrookfield\\nCudahy\\nDe P...\n", - "Largest villages (pop. over 15,000) \\nAshwaubenon\\nBellevue\\nCaledonia\\nFox Crossi...\n", - "Highest elevation (Gannett Peak[2][3][4]) NaN\n", - "Lowest elevation (Belle Fourche River at South Dakota border[3][4]) NaN\n", - "Name: Wisconsin, Length: 327, dtype: object" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "states_df.T.loc[\"Wisconsin\"]" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.8" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/web3_template-checkpoint.ipynb b/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/web3_template-checkpoint.ipynb deleted file mode 100644 index 6b0f12d..0000000 --- a/f22/meena_lec_notes/lec-33/.ipynb_checkpoints/web3_template-checkpoint.ipynb +++ /dev/null @@ -1,290 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Web 3\n", - "- HTML parsing using BeautifulSoup" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.core.display import display, HTML\n", - "display(HTML(\"<style>.container { width:100% !important; }</style>\"))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# STAGE 1: extract all state URLs from the states page\n", - "## Stage 1 pseudocode\n", - "1. Use requests module to send a GET request to https://simple.wikipedia.org/wiki/List_of_U.S._states\n", - "2. Don't forget to raise_for_status to ensure you are getting 200 OK status code\n", - "3. Explore what r.text gives you" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "url = \"https://simple.wikipedia.org/wiki/List_of_U.S._states\"\n", - "r = requests.get(url)\n", - "r.raise_for_status()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "4. Check out what type you are getting from r.text" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "5. Create BeautifulSoup object by passing r.text, \"html.parser\" as arguments and capture return value into a variable called doc\n", - "6. Try prettify() method call --- still not that pretty, right?" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "7. (Not a code step) Open \"https://simple.wikipedia.org/wiki/List_of_U.S._states\" on Google Chrome.\n", - " - Right click on one of the state pages\n", - " - Click on \"Inspect\" --- this opens developer tools\n", - " - This tool let's you explore the html source code\n", - " - Explore the \\<table\\> and sub tags like \\<th\\>, \\<tr\\>, \\<td\\>\n", - " - Let's go back to coding" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "7. Find all \"table\" elements in the document by using doc.find_all(...) function and capture return value into a variable \"tables\"\n", - " - explore the length of the value returned from find_all(...) function\n", - " - check out the type of the value returned from find_all(...) function\n", - "8. Add an assert to check that there is only one table - futuristic assert to make sure the html format hasn't changed on the website\n", - "9. Extract the first table into tbl variable\n", - " - explore type of tbl\n", - " - try printing the content of tb1 --- looks like just a string" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "10. Find all the tr elements by using tbl.find_all(...) function and capture return value into a variable tr.\n", - " - explore length of trs, type of trs\n", - " - Add an assert checking that length of trs is at least 50 (For 50 US states)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 1 pseudocode continued...\n", - "11. Iterate over each item in trs (going to be a lengthy step!)\n", - " - print each item (tr tag)\n", - " - call tr.find(..) to find \"th\" elements --- this finds th element for every tr element.\n", - " - capture return value into a variable called th\n", - " - print th and explore what you are getting.\n", - " - find each hyperlinks within each th element: call th.find_all(\"a\") and capture return value into a variable called links\n", - " - explore length of links by printing it --- some of the states have 2 links; go back and explore why that is the case and figure out which link you want\n", - " - some have 0 links, skip over those entries!\n", - " - extract first of the hyperlinks into a variable called link\n", - " - print link to confirm you are able to extract the correct link\n", - " - explore type of link\n", - " - print link.get_text() method and get attrs of link by saying link.attrs\n", - " - capture link.get_text() into a variable state\n", - " - capture link.attrs into a variable state_url --- we need a full URL. Define a prefix variable holding \"https://simple.wikipedia.org\" and concatenate prefix + link.attrs\n", - " - create a new dictionary called state_links --- we are going to use this dict to track each state and its URL. Think carefully about where you have to create this empty dict.\n", - "\n", - "#### Congrats :) stage 1 is done" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# STAGE 2: download the html page for each state\n", - "## Stage 2 pseudocode\n", - "1. Create a directory called \"html_files_for_states\". Make sure to use try except block to catch FileExistsError exception\n", - "2. Initially convert the keys of state_links dict into a list and work with just first 3 items in the list of keys\n", - "3. Iterate over each key (initially just use 3):\n", - " 1. If key is \"postal abbs.\", skip processing. What keyword allows you to skip current iteration of the loop?\n", - " 2. To create each state's html file name, concatenate the directory name \"html_files_for_states\" with current key and add a \".html\" to the end.\n", - " 3. Add the html file name into a new dictionary called \"state_files\". Think carefully about where you have to create this empty dict.\n", - " 4. Use requests module get(...) function call to download the contents of the state URL page.\n", - " 5. Open the state html file in write mode and write r.text into the state html file.\n", - " \n", - "#### Congrats :) stage 2 is done" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "html_dir = \"html_files_for_states\"\n", - "state_files = {} #KEY: state; VALUE: state file\n", - "\n", - "try:\n", - " os.mkdir(html_dir)\n", - "except FileExistsError:\n", - " pass\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# STAGE 3: extract details from each state page\n", - "## Stage 3 pseudocode\n", - "1. Write a function state_stats. Input path to 1 state file. Output dict of stats for that state\n", - "2. Open state html file, read its content.\n", - "3. Create a BeautifulSoup object called doc.\n", - "4. doc.find_all(\"tr\") - capture return value into a variable called trs\n", - "5. Iterate over each tr element\n", - " 1. You can retrieve a pair of elements by saying: cells = tr.find_all([\"th\", \"td\"])\n", - " 2. Explore length of the cells. Notice that there are some entries have length > 2. Let's skip over those. \n", - " 3. Create a dict called stats, where key is the th element's text and the value is td element's text\n", - "6. Don't forget to return the stats dict\n", - "7. Call state_stats with state_files[\"Wisconsin\"]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stage 3 pseudocode continued\n", - "- Iterate over all the state files, call state_stats function, and save the return value into a variable.\n", - "- Keep track of each state's stats in a dict called state_details\n", - "- Create a pandas DataFrame from the state_details dict\n", - "- Explore the DataFrame." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.8" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/f22/meena_lec_notes/lec-33/lec_33_database2.ipynb b/f22/meena_lec_notes/lec-33/lec_33_database2.ipynb index 52e3a93..bd9c619 100644 --- a/f22/meena_lec_notes/lec-33/lec_33_database2.ipynb +++ b/f22/meena_lec_notes/lec-33/lec_33_database2.ipynb @@ -1,10 +1,26 @@ { "cells": [ { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 1, "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style>em { color: red; }</style>" + ], + "text/plain": [ + "<IPython.core.display.HTML object>" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "## ignore this cell (it's just to make certain text red later, but you don't need to understand it).\n", + "# ignore this cell (it's just to make certain text red later, but you don't need to understand it).\n", "from IPython.core.display import HTML\n", "HTML('<style>em { color: red; }</style>')" ] @@ -848,7 +864,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### What is the *Title* of the movie with the highest *Revenue* in *Year* 2016?" + "### What is the *Title* of the movie with the highest *Revenue* in *Year* 2019?" ] }, { @@ -885,17 +901,17 @@ " <tbody>\n", " <tr>\n", " <th>0</th>\n", - " <td>Rogue One</td>\n", - " <td>532.17</td>\n", - " <td>2016</td>\n", + " <td>Avengers: Endgame</td>\n", + " <td>858.37</td>\n", + " <td>2019</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ - " Title Revenue Year\n", - "0 Rogue One 532.17 2016" + " Title Revenue Year\n", + "0 Avengers: Endgame 858.37 2019" ] }, "execution_count": 14, @@ -907,7 +923,7 @@ "df = qry(\"\"\"\n", "SELECT title, revenue, year\n", "FROM movies\n", - "WHERE year = 2016\n", + "WHERE year = 2019\n", "ORDER BY revenue DESC\n", "LIMIT 1\n", "\"\"\")\n", @@ -922,7 +938,7 @@ { "data": { "text/plain": [ - "'Rogue One'" + "'Avengers: Endgame'" ] }, "execution_count": 15, @@ -938,7 +954,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *3 movies* had the highest *Revenue* in the *Year* 2016?" + "### Which *3 movies* had the top-3 highest *Revenue* in the *Year* 2019?" ] }, { @@ -974,28 +990,28 @@ " <tbody>\n", " <tr>\n", " <th>0</th>\n", - " <td>Rogue One</td>\n", - " <td>532.17</td>\n", + " <td>Avengers: Endgame</td>\n", + " <td>858.37</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", - " <td>Finding Dory</td>\n", - " <td>486.29</td>\n", + " <td>Toy Story 4</td>\n", + " <td>434.04</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", - " <td>Captain America: Civil War</td>\n", - " <td>408.08</td>\n", + " <td>Joker</td>\n", + " <td>335.45</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ - " Title Revenue\n", - "0 Rogue One 532.17\n", - "1 Finding Dory 486.29\n", - "2 Captain America: Civil War 408.08" + " Title Revenue\n", + "0 Avengers: Endgame 858.37\n", + "1 Toy Story 4 434.04\n", + "2 Joker 335.45" ] }, "execution_count": 16, @@ -1007,7 +1023,7 @@ "df = qry(\"\"\"\n", "SELECT title, revenue\n", "FROM movies\n", - "WHERE year = 2016\n", + "WHERE year = 2019\n", "ORDER BY revenue DESC\n", "LIMIT 3\n", "\"\"\")\n", @@ -1022,7 +1038,7 @@ { "data": { "text/plain": [ - "[532.17, 486.29, 408.08]" + "['Avengers: Endgame', 'Toy Story 4', 'Joker']" ] }, "execution_count": 17, @@ -1031,8 +1047,8 @@ } ], "source": [ - "# Extract revenue column and convert to list\n", - "list(df[\"Revenue\"])" + "# Extract title column and convert to list\n", + "list(df[\"Title\"])" ] }, { @@ -1258,11 +1274,11 @@ } ], "source": [ - "# This doesn't feel correct - it counts duplicates for director names!\n", "qry(\"\"\"\n", "SELECT COUNT(director)\n", "FROM movies\n", - "\"\"\")" + "\"\"\")\n", + "# This doesn't feel correct - it counts duplicates for director names!" ] }, { @@ -1331,13 +1347,140 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### What is the total *Revenue* of *all the movies*?" + "### What are the names of the *directors* (without duplicates)?" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>Director</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>James Gunn</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>Ridley Scott</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>M. Night Shyamalan</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>Christophe Lourdelet</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>David Ayer</td>\n", + " </tr>\n", + " <tr>\n", + " <th>...</th>\n", + " <td>...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>674</th>\n", + " <td>Andrey Zvyagintsev</td>\n", + " </tr>\n", + " <tr>\n", + " <th>675</th>\n", + " <td>Sean Baker</td>\n", + " </tr>\n", + " <tr>\n", + " <th>676</th>\n", + " <td>Destin Daniel Cretton</td>\n", + " </tr>\n", + " <tr>\n", + " <th>677</th>\n", + " <td>Tyler Nilson</td>\n", + " </tr>\n", + " <tr>\n", + " <th>678</th>\n", + " <td>Bradley Cooper</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "<p>679 rows × 1 columns</p>\n", + "</div>" + ], + "text/plain": [ + " Director\n", + "0 James Gunn\n", + "1 Ridley Scott\n", + "2 M. Night Shyamalan\n", + "3 Christophe Lourdelet\n", + "4 David Ayer\n", + ".. ...\n", + "674 Andrey Zvyagintsev\n", + "675 Sean Baker\n", + "676 Destin Daniel Cretton\n", + "677 Tyler Nilson\n", + "678 Bradley Cooper\n", + "\n", + "[679 rows x 1 columns]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = qry(\"\"\"\n", + "SELECT DISTINCT director\n", + "FROM movies\n", + "\"\"\")\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract Director column and convert to list\n", + "director_list = list(df[\"Director\"]) \n", + "#director_list # uncomment to see the output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What is the total *Revenue* of *all the movies*?" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, "outputs": [ { "data": { @@ -1377,7 +1520,7 @@ "0 80668.27" ] }, - "execution_count": 22, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -1401,7 +1544,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -1442,7 +1585,7 @@ "0 6.805431" ] }, - "execution_count": 23, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -1458,7 +1601,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -1467,7 +1610,7 @@ "6.805430711610491" ] }, - "execution_count": 24, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -1478,7 +1621,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -1519,7 +1662,7 @@ "0 6.805431" ] }, - "execution_count": 25, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -1541,7 +1684,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -1584,7 +1727,7 @@ "0 75.532088 114.093633" ] }, - "execution_count": 26, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -1605,7 +1748,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -1646,7 +1789,7 @@ "0 89.8825" ] }, - "execution_count": 27, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1662,7 +1805,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -1671,7 +1814,7 @@ "89.88250000000001" ] }, - "execution_count": 28, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -1684,34 +1827,78 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### *How many movies* were there in *2016*?" + "### *How many movies* were there in *2019*?" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 31, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>COUNT(*)</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>23</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " COUNT(*)\n", + "0 23" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df = qry(\"\"\"\n", "SELECT COUNT(*)\n", "FROM movies\n", - "WHERE year = 2016\n", - "\"\"\")" + "WHERE year = 2019\n", + "\"\"\")\n", + "df" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "296" + "23" ] }, - "execution_count": 30, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1729,7 +1916,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1772,7 +1959,7 @@ "0 Star Wars: Episode VII - The Force Awakens 1.161088" ] }, - "execution_count": 31, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1787,7 +1974,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1796,7 +1983,7 @@ "'Star Wars: Episode VII - The Force Awakens'" ] }, - "execution_count": 32, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1809,12 +1996,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### What *percentage* of the *revenue* came from the *highest-revenue movie* in *2016*?" + "### What *percentage* of the *revenue* came from the *highest-revenue movie* in *2019*?" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1845,19 +2032,19 @@ " <tbody>\n", " <tr>\n", " <th>0</th>\n", - " <td>Rogue One</td>\n", - " <td>4.746581</td>\n", + " <td>Avengers: Endgame</td>\n", + " <td>32.19777</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ - " Title percentage\n", - "0 Rogue One 4.746581" + " Title percentage\n", + "0 Avengers: Endgame 32.19777" ] }, - "execution_count": 33, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1866,7 +2053,7 @@ "qry(\"\"\"\n", "SELECT title, MAX(revenue) / SUM(revenue) * 100 AS percentage\n", "FROM movies\n", - "WHERE year = 2016\n", + "WHERE year = 2019\n", "\"\"\")" ] }, @@ -1902,7 +2089,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -2029,7 +2216,7 @@ "14 2020 1025.19" ] }, - "execution_count": 34, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -2046,12 +2233,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### *How many movies* were by each *director*?" + "### *How many movies* were directed by the top-10 *director*s?" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -2148,7 +2335,7 @@ "9 Woody Allen 5" ] }, - "execution_count": 35, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -2172,7 +2359,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -2278,7 +2465,7 @@ "[679 rows x 2 columns]" ] }, - "execution_count": 36, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -2295,12 +2482,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### How many *unique directors* created a movie in each *year*" + "### How many *unique directors* created a movie in each *year*?" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -2427,7 +2614,7 @@ "14 2020 6" ] }, - "execution_count": 37, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -2458,12 +2645,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### What is the *total revenue* per *year*, in *recent* years?" + "### What is the *total revenue* per *year*, in *recent* years (last 5 years)?" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -2530,13 +2717,12 @@ "4 2016 11211.65" ] }, - "execution_count": 38, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# recent means 5 years\n", "qry(\"\"\"\n", "SELECT year, SUM(revenue) AS total_revenue\n", "FROM movies\n", @@ -2555,7 +2741,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -2622,7 +2808,7 @@ "4 Zack Snyder 3" ] }, - "execution_count": 39, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -2642,12 +2828,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *three* of the *directors* have the *greatest average rating*?" + "### Which *three directors* have the *greatest average rating*?" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -2702,7 +2888,7 @@ "2 Olivier Nakache 8.6" ] }, - "execution_count": 40, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -2726,7 +2912,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -2738,7 +2924,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *five* of the *directors* have the *greatest average rating* over at *least three movies*?" + "### Which *five directors* have the *greatest average rating* over at *least three movies*?" ] }, { @@ -2752,7 +2938,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ @@ -2795,7 +2981,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *five* directors *having* at least 3 movies score the *greatest average rating* ?" + "### Which *five* directors *have at least 3 movies* that score the *greatest average rating* ?" ] }, { @@ -2810,9 +2996,26 @@ "" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SQL query sample format (with all main clauses - both mandatory and optional)\n", + "\n", + "```\n", + "SELECT \n", + "FROM movies\n", + "WHERE \n", + "GROUP BY \n", + "HAVING\n", + "ORDER BY\n", + "LIMIT\n", + "```" + ] + }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -2871,7 +3074,7 @@ "2 Anthony Russo 8.125000 4" ] }, - "execution_count": 43, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -2891,12 +3094,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *directors* have had *more than 3 movies* that have been *since 2010*?" + "### Which *directors* have had *more than 3 movies* that have been released *since 2010*?" ] }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -3029,7 +3232,7 @@ "15 Woody Allen 4" ] }, - "execution_count": 44, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -3048,12 +3251,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *directors* have more than *two* movies with runtimes under *100* minutes" + "### Which *directors* have more than *two* movies with runtimes under *100* minutes?" ] }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -3114,7 +3317,7 @@ "3 Woody Allen 4" ] }, - "execution_count": 45, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -3131,7 +3334,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 48, "metadata": {}, "outputs": [], "source": [ @@ -3156,7 +3359,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.9.12" } }, "nbformat": 4, diff --git a/f22/meena_lec_notes/lec-33/lec_33_database2_template.ipynb b/f22/meena_lec_notes/lec-33/lec_33_database2_template.ipynb index d775751..94136e3 100644 --- a/f22/meena_lec_notes/lec-33/lec_33_database2_template.ipynb +++ b/f22/meena_lec_notes/lec-33/lec_33_database2_template.ipynb @@ -193,7 +193,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### What is the *Title* of the movie with the highest *Revenue* in *Year* 2016?" + "### What is the *Title* of the movie with the highest *Revenue* in *Year* 2019?" ] }, { @@ -221,7 +221,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *3 movies* had the highest *Revenue* in the *Year* 2016?" + "### Which *3 movies* had the top-3 highest *Revenue* in the *Year* 2019?" ] }, { @@ -242,7 +242,7 @@ "metadata": {}, "outputs": [], "source": [ - "# Extract revenue column and convert to list\n" + "# Extract title column and convert to list\n" ] }, { @@ -321,10 +321,10 @@ "metadata": {}, "outputs": [], "source": [ - "# This doesn't feel correct - it counts duplicates for director names!\n", "qry(\"\"\"\n", "\n", - "\"\"\")" + "\"\"\")\n", + "# This doesn't feel correct - it counts duplicates for director names!" ] }, { @@ -345,6 +345,36 @@ "\"\"\")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What are the names of the *directors* (without duplicates)?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = qry(\"\"\"\n", + "\n", + "\"\"\")\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract Director column and convert to list\n", + "director_list = list(df[\"Director\"]) \n", + "#director_list # uncomment to see the output" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -457,7 +487,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### *How many movies* were there in *2016*?" + "### *How many movies* were there in *2019*?" ] }, { @@ -468,7 +498,8 @@ "source": [ "df = qry(\"\"\"\n", "\n", - "\"\"\")" + "\"\"\")\n", + "df" ] }, { @@ -512,7 +543,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### What *percentage* of the *revenue* came from the *highest-revenue movie* in *2016*?" + "### What *percentage* of the *revenue* came from the *highest-revenue movie* in *2019*?" ] }, { @@ -571,7 +602,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### *How many movies* were by each *director*?" + "### *How many movies* were directed by the top-10 *director*s?" ] }, { @@ -607,7 +638,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### How many *unique directors* created a movie in each *year*" + "### How many *unique directors* created a movie in each *year*?" ] }, { @@ -639,7 +670,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### What is the *total revenue* per *year*, in *recent* years?" + "### What is the *total revenue* per *year*, in *recent* years (last 5 years)?" ] }, { @@ -676,7 +707,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *three* of the *directors* have the *greatest average rating*?" + "### Which *three directors* have the *greatest average rating*?" ] }, { @@ -711,7 +742,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *five* of the *directors* have the *greatest average rating* over at *least three movies*?" + "### Which *five directors* have the *greatest average rating* over at *least three movies*?" ] }, { @@ -768,7 +799,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *five* directors *having* at least 3 movies score the *greatest average rating* ?" + "### Which *five* directors *have at least 3 movies* that score the *greatest average rating* ?" ] }, { @@ -783,6 +814,23 @@ "" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SQL query sample format (with all main clauses - both mandatory and optional)\n", + "\n", + "```\n", + "SELECT \n", + "FROM movies\n", + "WHERE \n", + "GROUP BY \n", + "HAVING\n", + "ORDER BY\n", + "LIMIT\n", + "```" + ] + }, { "cell_type": "code", "execution_count": null, @@ -798,7 +846,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *directors* have had *more than 3 movies* that have been *since 2010*?" + "### Which *directors* have had *more than 3 movies* that have been released *since 2010*?" ] }, { @@ -816,7 +864,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Which *directors* have more than *two* movies with runtimes under *100* minutes" + "### Which *directors* have more than *two* movies with runtimes under *100* minutes?" ] }, { @@ -856,7 +904,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.9.12" } }, "nbformat": 4, -- GitLab