{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introduction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('table',\n",
       "  'facts',\n",
       "  'facts',\n",
       "  2,\n",
       "  'CREATE TABLE \"facts\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, \"code\" varchar(255) NOT NULL, \"name\" varchar(255) NOT NULL, \"area\" integer, \"area_land\" integer, \"area_water\" integer, \"population\" integer, \"population_growth\" float, \"birth_rate\" float, \"death_rate\" float, \"migration_rate\" float, \"created_at\" datetime, \"updated_at\" datetime)'),\n",
       " ('table',\n",
       "  'sqlite_sequence',\n",
       "  'sqlite_sequence',\n",
       "  3,\n",
       "  'CREATE TABLE sqlite_sequence(name,seq)')]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import sqlite3\n",
    "import pandas as pd\n",
    "\n",
    "conn = sqlite3.connect(\"factbook.db\")\n",
    "cursor = conn.cursor()\n",
    "cursor.execute(q1).fetchall()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "
\n",
       "\n",
       "
\n",
       "  \n",
       "    \n",
       "       | \n",
       "      type | \n",
       "      name | \n",
       "      tbl_name | \n",
       "      rootpage | \n",
       "      sql | \n",
       "    
\n",
       "  \n",
       "  \n",
       "    \n",
       "      | 0 | \n",
       "      table | \n",
       "      facts | \n",
       "      facts | \n",
       "      2 | \n",
       "      CREATE TABLE \"facts\" (\"id\" INTEGER PRIMARY KEY... | \n",
       "    
\n",
       "    \n",
       "      | 1 | \n",
       "      table | \n",
       "      sqlite_sequence | \n",
       "      sqlite_sequence | \n",
       "      3 | \n",
       "      CREATE TABLE sqlite_sequence(name,seq) | \n",
       "    
\n",
       "  \n",
       "
\n",
       "
 "
      ],
      "text/plain": [
       "    type             name         tbl_name  rootpage  \\\n",
       "0  table            facts            facts         2   \n",
       "1  table  sqlite_sequence  sqlite_sequence         3   \n",
       "\n",
       "                                                 sql  \n",
       "0  CREATE TABLE \"facts\" (\"id\" INTEGER PRIMARY KEY...  \n",
       "1             CREATE TABLE sqlite_sequence(name,seq)  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q1 = \"SELECT * FROM sqlite_master WHERE type='table';\"\n",
    "pd.read_sql_query(q1, conn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "
\n",
       "  \n",
       "    \n",
       "       | \n",
       "      id | \n",
       "      code | \n",
       "      name | \n",
       "      area | \n",
       "      area_land | \n",
       "      area_water | \n",
       "      population | \n",
       "      population_growth | \n",
       "      birth_rate | \n",
       "      death_rate | \n",
       "      migration_rate | \n",
       "      created_at | \n",
       "      updated_at | \n",
       "    
\n",
       "  \n",
       "  \n",
       "    \n",
       "      | 0 | \n",
       "      1 | \n",
       "      af | \n",
       "      Afghanistan | \n",
       "      652230 | \n",
       "      652230 | \n",
       "      0 | \n",
       "      32564342 | \n",
       "      2.32 | \n",
       "      38.57 | \n",
       "      13.89 | \n",
       "      1.51 | \n",
       "      2015-11-01 13:19:49.461734 | \n",
       "      2015-11-01 13:19:49.461734 | \n",
       "    
\n",
       "    \n",
       "      | 1 | \n",
       "      2 | \n",
       "      al | \n",
       "      Albania | \n",
       "      28748 | \n",
       "      27398 | \n",
       "      1350 | \n",
       "      3029278 | \n",
       "      0.30 | \n",
       "      12.92 | \n",
       "      6.58 | \n",
       "      3.30 | \n",
       "      2015-11-01 13:19:54.431082 | \n",
       "      2015-11-01 13:19:54.431082 | \n",
       "    
\n",
       "    \n",
       "      | 2 | \n",
       "      3 | \n",
       "      ag | \n",
       "      Algeria | \n",
       "      2381741 | \n",
       "      2381741 | \n",
       "      0 | \n",
       "      39542166 | \n",
       "      1.84 | \n",
       "      23.67 | \n",
       "      4.31 | \n",
       "      0.92 | \n",
       "      2015-11-01 13:19:59.961286 | \n",
       "      2015-11-01 13:19:59.961286 | \n",
       "    
\n",
       "    \n",
       "      | 3 | \n",
       "      4 | \n",
       "      an | \n",
       "      Andorra | \n",
       "      468 | \n",
       "      468 | \n",
       "      0 | \n",
       "      85580 | \n",
       "      0.12 | \n",
       "      8.13 | \n",
       "      6.96 | \n",
       "      0.00 | \n",
       "      2015-11-01 13:20:03.659945 | \n",
       "      2015-11-01 13:20:03.659945 | \n",
       "    
\n",
       "    \n",
       "      | 4 | \n",
       "      5 | \n",
       "      ao | \n",
       "      Angola | \n",
       "      1246700 | \n",
       "      1246700 | \n",
       "      0 | \n",
       "      19625353 | \n",
       "      2.78 | \n",
       "      38.78 | \n",
       "      11.49 | \n",
       "      0.46 | \n",
       "      2015-11-01 13:20:08.625072 | \n",
       "      2015-11-01 13:20:08.625072 | \n",
       "    
\n",
       "  \n",
       "
\n",
       "
 "
      ],
      "text/plain": [
       "   id code         name     area  area_land  area_water  population  \\\n",
       "0   1   af  Afghanistan   652230     652230           0    32564342   \n",
       "1   2   al      Albania    28748      27398        1350     3029278   \n",
       "2   3   ag      Algeria  2381741    2381741           0    39542166   \n",
       "3   4   an      Andorra      468        468           0       85580   \n",
       "4   5   ao       Angola  1246700    1246700           0    19625353   \n",
       "\n",
       "   population_growth  birth_rate  death_rate  migration_rate  \\\n",
       "0               2.32       38.57       13.89            1.51   \n",
       "1               0.30       12.92        6.58            3.30   \n",
       "2               1.84       23.67        4.31            0.92   \n",
       "3               0.12        8.13        6.96            0.00   \n",
       "4               2.78       38.78       11.49            0.46   \n",
       "\n",
       "                   created_at                  updated_at  \n",
       "0  2015-11-01 13:19:49.461734  2015-11-01 13:19:49.461734  \n",
       "1  2015-11-01 13:19:54.431082  2015-11-01 13:19:54.431082  \n",
       "2  2015-11-01 13:19:59.961286  2015-11-01 13:19:59.961286  \n",
       "3  2015-11-01 13:20:03.659945  2015-11-01 13:20:03.659945  \n",
       "4  2015-11-01 13:20:08.625072  2015-11-01 13:20:08.625072  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q2 = \"select * from facts limit 5\"\n",
    "pd.read_sql_query(q2, conn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Summary Statistics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "
\n",
       "  \n",
       "    \n",
       "       | \n",
       "      min_pop | \n",
       "      max_pop | \n",
       "      min_pop_grwth | \n",
       "      max_pop_grwth | \n",
       "    
\n",
       "  \n",
       "  \n",
       "    \n",
       "      | 0 | \n",
       "      0 | \n",
       "      7256490011 | \n",
       "      0.0 | \n",
       "      4.02 | \n",
       "    
\n",
       "  \n",
       "
\n",
       "
 "
      ],
      "text/plain": [
       "   min_pop     max_pop  min_pop_grwth  max_pop_grwth\n",
       "0        0  7256490011            0.0           4.02"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q3 = '''\n",
    "select min(population) min_pop, max(population) max_pop, \n",
    "min(population_growth) min_pop_grwth, max(population_growth) max_pop_grwth \n",
    "from facts\n",
    "'''\n",
    "pd.read_sql_query(q3, conn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Outliers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "
\n",
       "  \n",
       "    \n",
       "       | \n",
       "      id | \n",
       "      code | \n",
       "      name | \n",
       "      area | \n",
       "      area_land | \n",
       "      area_water | \n",
       "      population | \n",
       "      population_growth | \n",
       "      birth_rate | \n",
       "      death_rate | \n",
       "      migration_rate | \n",
       "      created_at | \n",
       "      updated_at | \n",
       "    
\n",
       "  \n",
       "  \n",
       "    \n",
       "      | 0 | \n",
       "      261 | \n",
       "      xx | \n",
       "      World | \n",
       "      None | \n",
       "      None | \n",
       "      None | \n",
       "      7256490011 | \n",
       "      1.08 | \n",
       "      18.6 | \n",
       "      7.8 | \n",
       "      None | \n",
       "      2015-11-01 13:39:09.910721 | \n",
       "      2015-11-01 13:39:09.910721 | \n",
       "    
\n",
       "  \n",
       "
\n",
       "
 "
      ],
      "text/plain": [
       "    id code   name  area area_land area_water  population  population_growth  \\\n",
       "0  261   xx  World  None      None       None  7256490011               1.08   \n",
       "\n",
       "   birth_rate  death_rate migration_rate                  created_at  \\\n",
       "0        18.6         7.8           None  2015-11-01 13:39:09.910721   \n",
       "\n",
       "                   updated_at  \n",
       "0  2015-11-01 13:39:09.910721  "
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q4 = '''\n",
    "select *\n",
    "from facts\n",
    "where population == (select max(population) from facts);\n",
    "'''\n",
    "\n",
    "pd.read_sql_query(q4, conn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "
\n",
       "  \n",
       "    \n",
       "       | \n",
       "      id | \n",
       "      code | \n",
       "      name | \n",
       "      area | \n",
       "      area_land | \n",
       "      area_water | \n",
       "      population | \n",
       "      population_growth | \n",
       "      birth_rate | \n",
       "      death_rate | \n",
       "      migration_rate | \n",
       "      created_at | \n",
       "      updated_at | \n",
       "    
\n",
       "  \n",
       "  \n",
       "    \n",
       "      | 0 | \n",
       "      250 | \n",
       "      ay | \n",
       "      Antarctica | \n",
       "      None | \n",
       "      280000 | \n",
       "      None | \n",
       "      0 | \n",
       "      None | \n",
       "      None | \n",
       "      None | \n",
       "      None | \n",
       "      2015-11-01 13:38:44.885746 | \n",
       "      2015-11-01 13:38:44.885746 | \n",
       "    
\n",
       "  \n",
       "
\n",
       "
 "
      ],
      "text/plain": [
       "    id code        name  area  area_land area_water  population  \\\n",
       "0  250   ay  Antarctica  None     280000       None           0   \n",
       "\n",
       "  population_growth birth_rate death_rate migration_rate  \\\n",
       "0              None       None       None           None   \n",
       "\n",
       "                   created_at                  updated_at  \n",
       "0  2015-11-01 13:38:44.885746  2015-11-01 13:38:44.885746  "
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q5 = '''\n",
    "select *\n",
    "from facts\n",
    "where population == (select min(population) from facts);\n",
    "'''\n",
    "\n",
    "pd.read_sql_query(q5, conn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Histograms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/srinify/anaconda/envs/dq/lib/python3.6/site-packages/IPython/core/interactiveshell.py:2847: UserWarning: To output multiple subplots, the figure containing the passed axes is being cleared\n",
      "  exec(code_obj, self.user_global_ns, self.user_ns)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[,\n",
       "        ],\n",
       "       [,\n",
       "        ]], dtype=object)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSS\nJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmF\nDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSS\nJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFRpsuYL42XnRT0yVIkiTNqChQ\nRcQxwJeBk4EDwFZgEtgJnJWZB0sLlKSm2ddJ6qTrU34RsRR4P3B/PetSYFNmrgFGgA3l5UlSs+zr\nJM1HyTVUlwBXAN+sX68Gbq2nbwDWFWxbktrCvk5SR12d8ouIM4DdmXljRLy9nj2SmZP19D5gZaft\nrFq1gtHRJd2U0Hrj42NNl9CKGvrNfVQ/tbWva8MxYQ2P1FQ9bfgcrKH7a6g2ApMRsQ44DvgwcMyU\n5WPA3k4b2bNnf5fNt9/u3fsabX98fKzxGvrNfWyPpjuyPmpdX9eGY8IaZtZEPW34HIaphrn6uq5O\n+WXmCzNzbWZOAHcArwJuiIiJepX1wI5uti1JbWFfJ2m+ennbhHOAzRGxDNgFXNPDbUtSW9jXSXqE\n4kBVf3M7ZG3p9iSpjezrJM3FO6VLkiQVMlBJkiQVMlBJkiQVMlBJkiQVMlBJkiQVMlBJkiQVMlBJ\nkiQVMlBJkiQVMlBJkiQV6uWjZzTFxotu6st2t5x7Ul+2K0lt069+VOoHR6gkSZIKGagkSZIKGagk\nSZIKGagkSZIKGagkSZIKGagkSZIKGagkSZIKGagkSZIKGagkSZIKGagkSZIKGagkSZIKGagkSZIK\n+XBkSZJ6oF8Pc95y7kl92a56yxEqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQl6ULkkq0q+LsaWFxBEq\nSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQl3dKT0i\nlgCbgQAmgTcADwBb69c7gbMy82BvypSkZtjfSZqPbkeoTgHIzBOBTcCFwKXApsxcA4wAG3pSoSQ1\ny/5OUkddBarM/ATwuvrlk4G9wGrg1nreDcC64uokqWH2d5Lmo+uHI2fmgYj4EPAfgV8ATs7MyXrx\nPmBlp22sWrWC0dEl3ZYwlMbHx/qy7kLlPmoQSvu7Xvd1bTgm2lDDsOj0Wbfh38IaCgIVQGa+OiLe\nBnwBeNSURWNU3+LmtGfP/pLmh9Lu3fvmtd74+Ni8112o3Mf2aLojG4SS/q6XfV0bjok21DBM5vqs\n2/BvMUw1zNXXdXXKLyJOj4i31y/3AweBL0XERD1vPbCjm21LUpvY30maj25HqK4FPhgRnwGWAm8B\ndgGbI2JZPX1Nb0qUpEbZ30nqqKtAlZnfA35phkVry8qRpHaxv5M0H97YU5IkqZCBSpIkqZCBSpIk\nqZCBSpIkqVDRfai0eGy86Ka+bHfLuSf1ZbuSJLWJI1SSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSS\nJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFDFSSJEmFRpsuQEdm\n40U3NV2CJEmaxhEqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKk\nQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQgYqSZKkQqNN\nFyBJkma38aKb+rLdLeee1JftDquuAlVELAW2AE8BjgYuAL4GbAUmgZ3AWZl5sCdVSlJD7O8kzUe3\np/xeCdyTmWuAFwOXA5cCm+p5I8CG3pQoSY2yv5PUUbeB6mPA+fX0CHAAWA3cWs+7AVhXVpoktYL9\nnaSOujrll5n3AUTEGHANsAm4JDMn61X2ASt7UqEkNcj+TtJ8dH1RekQ8CdgGvDczr46Id01ZPAbs\n7bSNVatWMDq6pNsStACMj48t6O23wTDsY9uV9ne97uvacEy0oQaV6eW/YRuOh6Zr6Pai9McD24E3\nZean69m3R8REZt4CrAdu7rSdPXv2d9O8FpDdu/f1bdvj42N93X4bLJR9bLoj66de9He97OvacEy0\noQaV69W/YRuOh0HVMFdf1+0I1XnAKuD8iDh0bcHZwGURsQzYRTU0LkkLnf2dpI66vYbqbKoOZbq1\nZeVIUrvY30maD++ULkmSVMhAJUmSVMhAJUmSVMhAJUmSVMhAJUmSVKjrG3tKi1G/nuoOPtldkhYz\nR6gkSZIKGagkSZIKGagkSZIKGagkSZIKGagkSZIKGagkSZIKGagkSZIKGagkSZIKGagkSZIKGagk\nSZIKGagkSZIKGagkSZIK+XBkSRoS/Xz4tzTsHKGSJEkqZKCSJEkqZKCSJEkqZKCSJEkq5EXpkiSp\n9fr1RxVbzj2pJ9txhEqSJKmQgUqSJKmQgUqSJKmQ11BpQfIGhZKkNnGESpIkqZCBSpIkqZCBSpIk\nqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqVDRndIj4njg4syciIinAluBSWAn\ncFZmHiwvUZKaZV8nqZOuR6gi4q3AlcDyetalwKbMXAOMABvKy5OkZtnXSZqPklN+dwOnTnm9Gri1\nnr4BWFewbUlqC/s6SR11Hagy8+PAD6bMGsnMyXp6H7CypDBJagP7OknzUXQN1TRTryEYA/Z2esOq\nVSsYHV3SwxLUNuPjY02X0BrdfhZ+hq3TeF/nMaFe6OVxNHVbp5zzpz3b7iD06nPoZaC6PSImMvMW\nYD1wc6c37Nmzv4fNq412797XdAmt0c1nMT4+tiA+wyH7Bd9oX7dQjgm1X6+Oo4V+TB5J7XP1db0M\nVOcAmyNiGbALuKaH25aktrCvk/QIRYEqM78BnFBP3wms7UFNktQq9nWSOunlCJUkSVogNl50U9Ml\nLCreKV2SJKmQgUqSJKmQgUqSJKmQgUqSJKmQgUqSJKmQgUqSJKmQgUqSJKmQgUqSJKmQgUqSJKmQ\ngUqSJKmQgUqSJKmQgUqSJKmQgUqSJKnQaNMFSCrTryfGbzn3pL5sV5IWI0eoJEmSChmoJEmSChmo\nJEmSCnkNlTQg/brWSZLUPEeoJEmSChmoJEmSChmoJEmSChmoJEmSCnlRuvrKC7GlI+PPjLQwOUIl\nSZJUyEAlSZJUyEAlSZJUyEAlSZJUyEAlSZJUyEAlSZJUyEAlSZJUyEAlSZJUyEAlSZJUyEAlSZJU\nyEAlSZJUyEAlSZJUyEAlSZJUaLSXG4uIo4D3AscCDwL/KTPv6mUbktQ0+zpJ0/V6hOrlwPLM/Cng\nXODdPd6+JLWBfZ2kw/Q6UP0H4C8AMvOvgOf2ePuS1Ab2dZIO0+tA9Vjgu1NePxQRPT2tKEktYF8n\n6TC97gDuBcamvD4qMw/MtvL4+NjIfDd83bs3lNQlSb1kXyfpML0eofos8BKAiDgB+GqPty9JbWBf\nJ+kwvR6h2gacHBGfA0aAM3u8fUlqA/s6SYcZmZycbLoGSZKkBc0be0qSJBUyUEmSJBUyUEmSJBUa\nmvumRMTxwMWZORERTwW2ApPATuCszDzYZH0lImIpsAV4CnA0cAHwNRbXPi4BNgNBtU9vAB5gEe0j\nQEQcA3wZOBk4wCLbP3Vvpp/zzPxkQ7X8y3GamV9voP23Az8HLAPem5lXDbj9pcCHqP4tHgJeO8jP\noQ2/z6bVcBzwHqrP4kHgVZn5T4OsYcq804Bfr59iMFBDMUIVEW8FrgSW17MuBTZl5hqqv9BZ6Dd+\neSVwT70/LwYuZ/Ht4ykAmXkisAm4kEW2j3Un/X7g/nrWoto/FZvp53zgZjhOB93+BPAC4ERgLfCk\nBsp4CTCamS8A3knVHw1EG36fzVDDH1GFmAngWuBtDdRARDwHeA3V5zBwQxGogLuBU6e8Xg3cWk/f\nAKwbeEW99THg/Hp6hGpkY1HtY2Z+Anhd/fLJwF4W2T4ClwBXAN+sXy+2/VOZmX7OmzD9OB20n6W6\n79c24Drg+gZquBMYrR+S/VjgBwNsuw2/z6bX8MuZeUc9PUp19mCgNUTEDwO/C7xlAG3PaCgCVWZ+\nnMMP+JHMPHS/iH3AysFX1TuZeV9m7ouIMeAaqhGcRbWPAJl5ICI+RDW0/Ccson2MiDOA3Zl545TZ\ni2b/VG6Wn/OBmuU4HbQfoXp24i9Snfr/k4gY9IjEfVSn+75OdSnCZYNquA2/z6bXkJn/CBARLwDe\nBPzBIGuoLwm5CvgNqs+gEUMRqGYw9fzyGNVox4IWEU8CbgY+kplXswj3ESAzXw08naoTe9SURQt9\nHzdS3SjyFuA44MPAMVOWL/T9Uw/M8HM+aI84TiPiCQOu4R7gxsz8fmYm1WjI+IBr+M91DU8HjgU+\nFBHLO7ynX1rR10fEK6hGLl+ambsH3Pxq4GnA+4D/Afy7iPjDAdcwtIHq9vo8PMB6YEeDtRSLiMcD\n24G3ZeaWevZi28fT6wtRAfZTdSJfWiz7mJkvzMy19TUIdwCvAm5YLPuncrP8nA/UTMdpZn5rwGXc\nBrw4IkYi4onAo6lC1iDt4eGHY38HWAosGXANhzTe10fEK6lGpiYy8+8G3X5mfjEzn1kfl78MfC0z\nB37qb2j+ym+ac4DNEbEM2EU1fL6QnQesAs6PiEPXWJwNXLaI9vFa4IMR8RmqzustVPu1mP4dp1ts\nx6nKzPRzvj4zG7k4vCmZeX1EvBD4ItWgwFmZ+dCAy/gDYEtE7KD6S8PzMvN7A67hkEb7ifp022XA\n/wGujQiAWzPztwdZRxv46BlJkqRCw3rKT5IkqWcMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIk\nSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUM\nVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIk\nSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUM\nVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVJIkSYUMVOqriNgaEf+lwzorI+Km\nKa/viIgf6n91kobRMPZLEfG8iLiinp6IiJ1N17TYjDZdgASsAp5/6EVmHtdgLZIEi69feibwo00X\nsZgZqIZUREwAvw/8P+DHgfuBM4BvAn8MHAdMAjcA52XmgYg4APwh8NPAo+v510bEGcAvZObL6m0f\n9npKmxuB1wPLgMcBF2Xm+4APAo+KiDuA1cABYDwzvx0R5wO/Us+7E3hTZn4rIm4BPg+cCPwYsAN4\ndWYe7O0nJWlQhrFfiogVwBXACcBe4GsAmXlGRHwD+ALwbOC8uq3LgR+uP4d3Z+aHI+J24Dcz8y8j\n4peBrcCqzLw/IjYD/xd4DbAyIj4IfAh4TET8D+AngOXAazNzx1z/Ppqbp/yG27+n+oF8NlXn8RHg\nMuAe4FnAc4FjgUND40uA72TmauCXgC0RMT6fhiLiMcBrgZdk5nOAVwDvqhefCdyfmcdl5kNT3nMm\nsB54Xl3jTqqO4pB/C0zUtZ4ErD2SnZfUSsPWL51PNbjxE8A64DnTlu/MzGcA1wGfBN5Tt7se+N2I\n+ClgG/Diev0XA3uANRFxFPBS4P3AbwE7MvPMer0fBf6gHnl7P/BfO9SpDgxUw+1/TflGsoXqB/k0\n4PLMnMzMB6m+Oa2f8p7LATLzb4CvAi+cT0OZeR/wMuClEfE7wDuAx3R423rgg5n5vfr1HwE/ExHL\n6tfXZebBzNwH3EX17VLSwjZs/dJLgKvq99xLNXo01aHP4unA8sy8tq79m8DHqQLUNh7+PNYAlwIn\nA8cDd2fmt2Zo9+7M/EI9fQdwTIc61YGBargdmDI9MuW/qY4Cls7ynqOAh6iGnqe+bxnTRMSPUv3Q\n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\nR8TxwMWZORERzwGuB/62Xvy+zPxoRLwWeD3Vc64uyMzr+1KxJElSy3QMVBHxVuB04Hv1rNXApZn5\n7inrPAHLxS/BAAAPIUlEQVR4M/BcYDlwW0R8KjMf7H3JkiRJ7TKfEaq7gVOBj9SvVwMRERuoRqne\nAjwf+GwdoB6MiLuAZwN/3fuSJUmS2qVjoMrMj0fEU6bM+iJwZWZ+OSLeAfw2cAfw3SnrzOv5Vm14\nHMOR3HK+Dbfeb7oG2/cYaLp9SWqjbm7suS0zDz27ahvwHuAzVM+0OmRez7dqw+MY5nvL+Tbcer/p\nGmzfY2C29g1ZkoZdN3/ld2NEPL+e/hngy1SjVmsiYnlErASeAezsUY2SJEmt1s0I1a8B74mIHwDf\nAl6XmfdGxGXADqqQ9o7MfKCHdUqSJLXWvAJVZn4DOKGe/gpw4gzrbAY297I4SZKkhcCHI0vSkNh4\n0U1NlyAtWt4pXZIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCB\nSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIkqZCBSpIk\nqZCBSpIkqdBo0wVIUptFxBJgMxDAJPAG4AFga/16J3BWZh5sqkZJzXOESpLmdgpAZp4IbAIuBC4F\nNmXmGmAE2NBceZLawEAlSXPIzE8Ar6tfPhnYC6wGbq3n3QCsa6A0SS3iKT9J6iAzD0TEh4D/CPwC\ncHJmTtaL9wEr53r/qlUrGB1d0ucqF5/x8bGmSzgiC63eI+G+dWagkqR5yMxXR8TbgC8Aj5qyaIxq\n1GpWe/bs72dpi9bu3fuaLmHexsfHFlS9R8J9O3z92XjKT5LmEBGnR8Tb65f7gYPAlyJiop63HtjR\nRG2S2sMRKkma27XAByPiM8BS4C3ALmBzRCyrp69psD5JLWCgkqQ5ZOb3gF+aYdHaQdciqb085SdJ\nklTIQCVJklTIQCVJklTIQCVJklTIQCVJklTIQCVJklTIQCVJklTIQCVJklTIQCVJklTIQCVJklTI\nQCVJklTIZ/lJklpp40U39WW7W849qS/b1XCbV6CKiOOBizNzIiKeCmwFJoGdwFmZeTAiXgu8HjgA\nXJCZ1/epZkmSpFbpeMovIt4KXAksr2ddCmzKzDXACLAhIp4AvBk4EfhZ4Pci4uj+lCxJktQu87mG\n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\n",
      "text/plain": [
       ""
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline\n",
    "\n",
    "fig = plt.figure(figsize=(10,10))\n",
    "ax = fig.add_subplot(111)\n",
    "\n",
    "q6 = '''\n",
    "select population, population_growth, birth_rate, death_rate\n",
    "from facts\n",
    "where population != (select max(population) from facts)\n",
    "and population != (select min(population) from facts);\n",
    "'''\n",
    "pd.read_sql_query(q6, conn).hist(ax=ax)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Which countries have the highest population density?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "
\n",
       "  \n",
       "    \n",
       "       | \n",
       "      name | \n",
       "      density | \n",
       "    
\n",
       "  \n",
       "  \n",
       "    \n",
       "      | 0 | \n",
       "      Macau | \n",
       "      21168.964286 | \n",
       "    
\n",
       "    \n",
       "      | 1 | \n",
       "      Monaco | \n",
       "      15267.500000 | \n",
       "    
\n",
       "    \n",
       "      | 2 | \n",
       "      Singapore | \n",
       "      8141.279770 | \n",
       "    
\n",
       "    \n",
       "      | 3 | \n",
       "      Hong Kong | \n",
       "      6445.041516 | \n",
       "    
\n",
       "    \n",
       "      | 4 | \n",
       "      Gaza Strip | \n",
       "      5191.819444 | \n",
       "    
\n",
       "    \n",
       "      | 5 | \n",
       "      Gibraltar | \n",
       "      4876.333333 | \n",
       "    
\n",
       "    \n",
       "      | 6 | \n",
       "      Bahrain | \n",
       "      1771.859211 | \n",
       "    
\n",
       "    \n",
       "      | 7 | \n",
       "      Maldives | \n",
       "      1319.640940 | \n",
       "    
\n",
       "    \n",
       "      | 8 | \n",
       "      Malta | \n",
       "      1310.015823 | \n",
       "    
\n",
       "    \n",
       "      | 9 | \n",
       "      Bermuda | \n",
       "      1299.925926 | \n",
       "    
\n",
       "    \n",
       "      | 10 | \n",
       "      Sint Maarten | \n",
       "      1167.323529 | \n",
       "    
\n",
       "    \n",
       "      | 11 | \n",
       "      Bangladesh | \n",
       "      1138.069143 | \n",
       "    
\n",
       "    \n",
       "      | 12 | \n",
       "      Guernsey | \n",
       "      847.179487 | \n",
       "    
\n",
       "    \n",
       "      | 13 | \n",
       "      Jersey | \n",
       "      838.741379 | \n",
       "    
\n",
       "    \n",
       "      | 14 | \n",
       "      Barbados | \n",
       "      675.823256 | \n",
       "    
\n",
       "    \n",
       "      | 15 | \n",
       "      Mauritius | \n",
       "      656.777941 | \n",
       "    
\n",
       "    \n",
       "      | 16 | \n",
       "      Taiwan | \n",
       "      650.781712 | \n",
       "    
\n",
       "    \n",
       "      | 17 | \n",
       "      Aruba | \n",
       "      623.122222 | \n",
       "    
\n",
       "    \n",
       "      | 18 | \n",
       "      Lebanon | \n",
       "      594.682788 | \n",
       "    
\n",
       "    \n",
       "      | 19 | \n",
       "      Saint Martin | \n",
       "      588.037037 | \n",
       "    
\n",
       "  \n",
       "
\n",
       "
 "
      ],
      "text/plain": [
       "            name       density\n",
       "0          Macau  21168.964286\n",
       "1         Monaco  15267.500000\n",
       "2      Singapore   8141.279770\n",
       "3      Hong Kong   6445.041516\n",
       "4     Gaza Strip   5191.819444\n",
       "5      Gibraltar   4876.333333\n",
       "6        Bahrain   1771.859211\n",
       "7       Maldives   1319.640940\n",
       "8          Malta   1310.015823\n",
       "9        Bermuda   1299.925926\n",
       "10  Sint Maarten   1167.323529\n",
       "11    Bangladesh   1138.069143\n",
       "12      Guernsey    847.179487\n",
       "13        Jersey    838.741379\n",
       "14      Barbados    675.823256\n",
       "15     Mauritius    656.777941\n",
       "16        Taiwan    650.781712\n",
       "17         Aruba    623.122222\n",
       "18       Lebanon    594.682788\n",
       "19  Saint Martin    588.037037"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q7 = \"select name, cast(population as float)/cast(area as float) density from facts order by density desc limit 20\"\n",
    "pd.read_sql_query(q7, conn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "
\n",
       "  \n",
       "    \n",
       "       | \n",
       "      population | \n",
       "      population_growth | \n",
       "      birth_rate | \n",
       "      death_rate | \n",
       "    
\n",
       "  \n",
       "  \n",
       "    \n",
       "      | 0 | \n",
       "      32564342 | \n",
       "      2.32 | \n",
       "      38.57 | \n",
       "      13.89 | \n",
       "    
\n",
       "    \n",
       "      | 1 | \n",
       "      3029278 | \n",
       "      0.30 | \n",
       "      12.92 | \n",
       "      6.58 | \n",
       "    
\n",
       "    \n",
       "      | 2 | \n",
       "      39542166 | \n",
       "      1.84 | \n",
       "      23.67 | \n",
       "      4.31 | \n",
       "    
\n",
       "    \n",
       "      | 3 | \n",
       "      85580 | \n",
       "      0.12 | \n",
       "      8.13 | \n",
       "      6.96 | \n",
       "    
\n",
       "    \n",
       "      | 4 | \n",
       "      19625353 | \n",
       "      2.78 | \n",
       "      38.78 | \n",
       "      11.49 | \n",
       "    
\n",
       "    \n",
       "      | 5 | \n",
       "      92436 | \n",
       "      1.24 | \n",
       "      15.85 | \n",
       "      5.69 | \n",
       "    
\n",
       "    \n",
       "      | 6 | \n",
       "      43431886 | \n",
       "      0.93 | \n",
       "      16.64 | \n",
       "      7.33 | \n",
       "    
\n",
       "    \n",
       "      | 7 | \n",
       "      3056382 | \n",
       "      0.15 | \n",
       "      13.61 | \n",
       "      9.34 | \n",
       "    
\n",
       "    \n",
       "      | 8 | \n",
       "      22751014 | \n",
       "      1.07 | \n",
       "      12.15 | \n",
       "      7.14 | \n",
       "    
\n",
       "    \n",
       "      | 9 | \n",
       "      8665550 | \n",
       "      0.55 | \n",
       "      9.41 | \n",
       "      9.42 | \n",
       "    
\n",
       "    \n",
       "      | 10 | \n",
       "      9780780 | \n",
       "      0.96 | \n",
       "      16.64 | \n",
       "      7.07 | \n",
       "    
\n",
       "    \n",
       "      | 11 | \n",
       "      324597 | \n",
       "      0.85 | \n",
       "      15.50 | \n",
       "      7.05 | \n",
       "    
\n",
       "    \n",
       "      | 12 | \n",
       "      1346613 | \n",
       "      2.41 | \n",
       "      13.66 | \n",
       "      2.69 | \n",
       "    
\n",
       "    \n",
       "      | 13 | \n",
       "      168957745 | \n",
       "      1.60 | \n",
       "      21.14 | \n",
       "      5.61 | \n",
       "    
\n",
       "    \n",
       "      | 14 | \n",
       "      290604 | \n",
       "      0.31 | \n",
       "      11.87 | \n",
       "      8.44 | \n",
       "    
\n",
       "    \n",
       "      | 15 | \n",
       "      9589689 | \n",
       "      0.20 | \n",
       "      10.70 | \n",
       "      13.36 | \n",
       "    
\n",
       "    \n",
       "      | 16 | \n",
       "      11323973 | \n",
       "      0.76 | \n",
       "      11.41 | \n",
       "      9.63 | \n",
       "    
\n",
       "    \n",
       "      | 17 | \n",
       "      347369 | \n",
       "      1.87 | \n",
       "      24.68 | \n",
       "      5.97 | \n",
       "    
\n",
       "    \n",
       "      | 18 | \n",
       "      10448647 | \n",
       "      2.78 | \n",
       "      36.02 | \n",
       "      8.21 | \n",
       "    
\n",
       "    \n",
       "      | 19 | \n",
       "      741919 | \n",
       "      1.11 | \n",
       "      17.78 | \n",
       "      6.69 | \n",
       "    
\n",
       "    \n",
       "      | 20 | \n",
       "      10800882 | \n",
       "      1.56 | \n",
       "      22.76 | \n",
       "      6.52 | \n",
       "    
\n",
       "    \n",
       "      | 21 | \n",
       "      3867055 | \n",
       "      0.13 | \n",
       "      8.87 | \n",
       "      9.75 | \n",
       "    
\n",
       "    \n",
       "      | 22 | \n",
       "      2182719 | \n",
       "      1.21 | \n",
       "      20.96 | \n",
       "      13.39 | \n",
       "    
\n",
       "    \n",
       "      | 23 | \n",
       "      204259812 | \n",
       "      0.77 | \n",
       "      14.46 | \n",
       "      6.58 | \n",
       "    
\n",
       "    \n",
       "      | 24 | \n",
       "      429646 | \n",
       "      1.62 | \n",
       "      17.32 | \n",
       "      3.52 | \n",
       "    
\n",
       "    \n",
       "      | 25 | \n",
       "      7186893 | \n",
       "      0.58 | \n",
       "      8.92 | \n",
       "      14.44 | \n",
       "    
\n",
       "    \n",
       "      | 26 | \n",
       "      18931686 | \n",
       "      3.03 | \n",
       "      42.03 | \n",
       "      11.72 | \n",
       "    
\n",
       "    \n",
       "      | 27 | \n",
       "      56320206 | \n",
       "      1.01 | \n",
       "      18.39 | \n",
       "      7.96 | \n",
       "    
\n",
       "    \n",
       "      | 28 | \n",
       "      10742276 | \n",
       "      3.28 | \n",
       "      42.01 | \n",
       "      9.27 | \n",
       "    
\n",
       "    \n",
       "      | 29 | \n",
       "      15708756 | \n",
       "      1.58 | \n",
       "      23.83 | \n",
       "      7.68 | \n",
       "    
\n",
       "    \n",
       "      | ... | \n",
       "      ... | \n",
       "      ... | \n",
       "      ... | \n",
       "      ... | \n",
       "    
\n",
       "    \n",
       "      | 210 | \n",
       "      112162 | \n",
       "      1.33 | \n",
       "      12.56 | \n",
       "      8.18 | \n",
       "    
\n",
       "    \n",
       "      | 211 | \n",
       "      148406 | \n",
       "      0.43 | \n",
       "      13.80 | \n",
       "      8.20 | \n",
       "    
\n",
       "    \n",
       "      | 212 | \n",
       "      39689 | \n",
       "      1.51 | \n",
       "      13.00 | \n",
       "      4.51 | \n",
       "    
\n",
       "    \n",
       "      | 213 | \n",
       "      9838 | \n",
       "      2.95 | \n",
       "      14.33 | \n",
       "      8.03 | \n",
       "    
\n",
       "    \n",
       "      | 214 | \n",
       "      1190 | \n",
       "      0.03 | \n",
       "      NaN | \n",
       "      NaN | \n",
       "    
\n",
       "    \n",
       "      | 215 | \n",
       "      1337 | \n",
       "      0.01 | \n",
       "      NaN | \n",
       "      NaN | \n",
       "    
\n",
       "    \n",
       "      | 216 | \n",
       "      1872 | \n",
       "      0.03 | \n",
       "      NaN | \n",
       "      NaN | \n",
       "    
\n",
       "    \n",
       "      | 217 | \n",
       "      15700 | \n",
       "      NaN | \n",
       "      NaN | \n",
       "      NaN | \n",
       "    
\n",
       "    \n",
       "      | 218 | \n",
       "      16418 | \n",
       "      2.03 | \n",
       "      12.67 | \n",
       "      4.57 | \n",
       "    
\n",
       "    \n",
       "      | 219 | \n",
       "      70196 | \n",
       "      0.50 | \n",
       "      11.33 | \n",
       "      8.23 | \n",
       "    
\n",
       "    \n",
       "      | 220 | \n",
       "      33454 | \n",
       "      2.32 | \n",
       "      10.91 | \n",
       "      4.99 | \n",
       "    
\n",
       "    \n",
       "      | 221 | \n",
       "      56092 | \n",
       "      2.10 | \n",
       "      12.11 | \n",
       "      5.53 | \n",
       "    
\n",
       "    \n",
       "      | 222 | \n",
       "      15700 | \n",
       "      NaN | \n",
       "      NaN | \n",
       "      NaN | \n",
       "    
\n",
       "    \n",
       "      | 223 | \n",
       "      3361 | \n",
       "      0.01 | \n",
       "      10.90 | \n",
       "      4.90 | \n",
       "    
\n",
       "    \n",
       "      | 224 | \n",
       "      29258 | \n",
       "      0.24 | \n",
       "      14.08 | \n",
       "      8.37 | \n",
       "    
\n",
       "    \n",
       "      | 225 | \n",
       "      66080 | \n",
       "      0.34 | \n",
       "      9.84 | \n",
       "      8.78 | \n",
       "    
\n",
       "    \n",
       "      | 226 | \n",
       "      97294 | \n",
       "      0.80 | \n",
       "      11.91 | \n",
       "      7.68 | \n",
       "    
\n",
       "    \n",
       "      | 227 | \n",
       "      87545 | \n",
       "      0.76 | \n",
       "      11.10 | \n",
       "      10.06 | \n",
       "    
\n",
       "    \n",
       "      | 228 | \n",
       "      5241 | \n",
       "      0.50 | \n",
       "      11.26 | \n",
       "      6.30 | \n",
       "    
\n",
       "    \n",
       "      | 229 | \n",
       "      48 | \n",
       "      0.00 | \n",
       "      NaN | \n",
       "      NaN | \n",
       "    
\n",
       "    \n",
       "      | 230 | \n",
       "      7795 | \n",
       "      0.24 | \n",
       "      9.88 | \n",
       "      7.44 | \n",
       "    
\n",
       "    \n",
       "      | 231 | \n",
       "      50280 | \n",
       "      2.30 | \n",
       "      16.13 | \n",
       "      3.10 | \n",
       "    
\n",
       "    \n",
       "      | 232 | \n",
       "      54343 | \n",
       "      0.30 | \n",
       "      22.89 | \n",
       "      4.75 | \n",
       "    
\n",
       "    \n",
       "      | 233 | \n",
       "      161785 | \n",
       "      0.54 | \n",
       "      16.82 | \n",
       "      5.12 | \n",
       "    
\n",
       "    \n",
       "      | 234 | \n",
       "      52344 | \n",
       "      2.18 | \n",
       "      18.32 | \n",
       "      3.71 | \n",
       "    
\n",
       "    \n",
       "      | 235 | \n",
       "      3598357 | \n",
       "      0.60 | \n",
       "      10.86 | \n",
       "      8.67 | \n",
       "    
\n",
       "    \n",
       "      | 236 | \n",
       "      103574 | \n",
       "      0.59 | \n",
       "      10.31 | \n",
       "      8.54 | \n",
       "    
\n",
       "    \n",
       "      | 237 | \n",
       "      1869055 | \n",
       "      2.81 | \n",
       "      31.11 | \n",
       "      3.04 | \n",
       "    
\n",
       "    \n",
       "      | 238 | \n",
       "      2785366 | \n",
       "      1.95 | \n",
       "      22.99 | \n",
       "      3.50 | \n",
       "    
\n",
       "    \n",
       "      | 239 | \n",
       "      570866 | \n",
       "      2.82 | \n",
       "      30.24 | \n",
       "      8.34 | \n",
       "    
\n",
       "  \n",
       "
\n",
       "
240 rows × 4 columns
\n",
       "
 "
      ],
      "text/plain": [
       "     population  population_growth  birth_rate  death_rate\n",
       "0      32564342               2.32       38.57       13.89\n",
       "1       3029278               0.30       12.92        6.58\n",
       "2      39542166               1.84       23.67        4.31\n",
       "3         85580               0.12        8.13        6.96\n",
       "4      19625353               2.78       38.78       11.49\n",
       "5         92436               1.24       15.85        5.69\n",
       "6      43431886               0.93       16.64        7.33\n",
       "7       3056382               0.15       13.61        9.34\n",
       "8      22751014               1.07       12.15        7.14\n",
       "9       8665550               0.55        9.41        9.42\n",
       "10      9780780               0.96       16.64        7.07\n",
       "11       324597               0.85       15.50        7.05\n",
       "12      1346613               2.41       13.66        2.69\n",
       "13    168957745               1.60       21.14        5.61\n",
       "14       290604               0.31       11.87        8.44\n",
       "15      9589689               0.20       10.70       13.36\n",
       "16     11323973               0.76       11.41        9.63\n",
       "17       347369               1.87       24.68        5.97\n",
       "18     10448647               2.78       36.02        8.21\n",
       "19       741919               1.11       17.78        6.69\n",
       "20     10800882               1.56       22.76        6.52\n",
       "21      3867055               0.13        8.87        9.75\n",
       "22      2182719               1.21       20.96       13.39\n",
       "23    204259812               0.77       14.46        6.58\n",
       "24       429646               1.62       17.32        3.52\n",
       "25      7186893               0.58        8.92       14.44\n",
       "26     18931686               3.03       42.03       11.72\n",
       "27     56320206               1.01       18.39        7.96\n",
       "28     10742276               3.28       42.01        9.27\n",
       "29     15708756               1.58       23.83        7.68\n",
       "..          ...                ...         ...         ...\n",
       "210      112162               1.33       12.56        8.18\n",
       "211      148406               0.43       13.80        8.20\n",
       "212       39689               1.51       13.00        4.51\n",
       "213        9838               2.95       14.33        8.03\n",
       "214        1190               0.03         NaN         NaN\n",
       "215        1337               0.01         NaN         NaN\n",
       "216        1872               0.03         NaN         NaN\n",
       "217       15700                NaN         NaN         NaN\n",
       "218       16418               2.03       12.67        4.57\n",
       "219       70196               0.50       11.33        8.23\n",
       "220       33454               2.32       10.91        4.99\n",
       "221       56092               2.10       12.11        5.53\n",
       "222       15700                NaN         NaN         NaN\n",
       "223        3361               0.01       10.90        4.90\n",
       "224       29258               0.24       14.08        8.37\n",
       "225       66080               0.34        9.84        8.78\n",
       "226       97294               0.80       11.91        7.68\n",
       "227       87545               0.76       11.10       10.06\n",
       "228        5241               0.50       11.26        6.30\n",
       "229          48               0.00         NaN         NaN\n",
       "230        7795               0.24        9.88        7.44\n",
       "231       50280               2.30       16.13        3.10\n",
       "232       54343               0.30       22.89        4.75\n",
       "233      161785               0.54       16.82        5.12\n",
       "234       52344               2.18       18.32        3.71\n",
       "235     3598357               0.60       10.86        8.67\n",
       "236      103574               0.59       10.31        8.54\n",
       "237     1869055               2.81       31.11        3.04\n",
       "238     2785366               1.95       22.99        3.50\n",
       "239      570866               2.82       30.24        8.34\n",
       "\n",
       "[240 rows x 4 columns]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q7 = '''select population, population_growth, birth_rate, death_rate\n",
    "from facts\n",
    "where population != (select max(population) from facts)\n",
    "and population != (select min(population) from facts);\n",
    "'''\n",
    "pd.read_sql_query(q7, conn)"
   ]
  }
 ],
 "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.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}