Difference between revisions of "SQLZOO:SELECT basics"

From SQLZOO
Jump to: navigation, search
(Per Capita GDP)
(29 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 
 
<div class="ref_section">
 
<div class="ref_section">
<table class='db_ref'><tr>
+
<table class='db_ref'>
<th>name</th>
+
<tr><th>name</th><th>continent</th><th>area</th>
<th>region</th>
+
<th>population</th><th>gdp</th></tr>
<th>area</th>
+
<tr><td>Afghanistan</td><td>Asia</td><td class="r">652230</td><td class="r">25500100</td><td class="r">20343000000</td></tr>
<th>population</th>
+
<tr><td>Albania</td><td>Europe</td><td class="r">28748 </td><td class="r">2831741 </td><td class="r">12960000000 </td></tr>
<th>gdp</th>
+
<tr><td>Algeria</td><td>Africa</td><td class="r">2381741 </td><td class="r">37100000 </td><td class="r">188681000000 </td></tr>
</tr>
+
<tr><td>Andorra</td><td>Europe</td><td class="r">468</td><td class="r">78115 </td><td class="r">3712000000 </td></tr><tr>
 +
<td>Angola</td><td>Africa</td><td class="r">1246700 </td><td class="r">20609294 </td><td class="r">100990000000 </td></tr>
 
<tr>
 
<tr>
<td>Afghanistan</td>
+
<td colspan='5'>....</td>
<td>South Asia</td>
+
<td align='right'>652225</td>
+
<td align='right'>26000000</td>
+
<td></td>
+
</tr>
+
<tr>
+
<td>Albania</td>
+
<td>Europe</td>
+
<td align='right'>28728</td>
+
<td align='right'>3200000</td>
+
<td align='right'>6656000000</td>
+
</tr>
+
<tr>
+
<td>Algeria</td>
+
<td>Middle East</td>
+
<td align='right'>2400000</td>
+
<td align='right'>32900000</td>
+
<td align='right'>75012000000</td>
+
</tr>
+
<tr>
+
<td>Andorra</td>
+
<td>Europe</td>
+
<td align='right'>468</td>
+
<td align='right'>64000</td>
+
<td></td>
+
</tr>
+
<tr>
+
<td colspan='5'>...</td>
+
 
</tr>
 
</tr>
 
</table>
 
</table>
 
</div>
 
</div>
  
  <h2>Introducing the BBC Table of Countries</h2>
+
==Introducing the <code>world</code> table of countries==
   <p>This tutorial introduces SQL as a  query language. We will be using the SELECT command on the table bbc:</p>
+
   <p>This tutorial introduces SQL. We will be using the SELECT command on the table '''world''':</p>
  
 
<div class="progress_panel"><div>
 
<div class="progress_panel"><div>
<div class="summary">Summary</div>
+
  <div class="summary">Summary</div>
<div class="progressbarbg">
+
  <div class="progressbarbg">
  <div class="progressbar"></div>
+
    <div class="progressbar"></div>
</div>
+
  </div>
 
</div></div>
 
</div></div>
  
Line 61: Line 33:
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
SELECT population FROM bbc
+
SELECT population FROM world
 
   WHERE name = 'France'
 
   WHERE name = 'France'
 
</source>
 
</source>
  
 
<source lang='sql' class='ans'>
 
<source lang='sql' class='ans'>
SELECT population FROM bbc
+
SELECT population FROM world
 
   WHERE name = 'Germany'
 
   WHERE name = 'Germany'
 
</source>
 
</source>
 
</div>
 
</div>
  
 +
==Per Capita GDP==
 
<div class='qu'>
 
<div class='qu'>
<div>This query shows the population density <code>population/area</code>
+
<div>The query shows the population density <code>population/area</code>
 
for each country where the area is over 5,000,000 km<sup>2</sup>.</div>
 
for each country where the area is over 5,000,000 km<sup>2</sup>.</div>
 
<div class='imper'>Show the per capita gdp: <code>gdp/population</code>
 
<div class='imper'>Show the per capita gdp: <code>gdp/population</code>
for each country where the area is over 5,000,000 km<sup>2</sup></div>
+
for each country where the area is over 5,000,000 km<sup>2</sup></div>.
  
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
SELECT name, population/area FROM bbc
+
SELECT name, population/area FROM world
 
   WHERE area > 5000000
 
   WHERE area > 5000000
 
</source>
 
</source>
  
 
<source lang='sql' class='ans'>
 
<source lang='sql' class='ans'>
SELECT name, gdp/population FROM bbc
+
SELECT name, gdp/population FROM world
 
   WHERE area > 5000000
 
   WHERE area > 5000000
 
</source>
 
</source>
 +
 
</div>
 
</div>
  
 +
==Small and wealthy==
 
<div class='qu'>
 
<div class='qu'>
 
Where to find some very small, very rich countries.<br/>
 
Where to find some very small, very rich countries.<br/>
Line 94: Line 69:
 
<div>The example shows the countries where the population is small and the
 
<div>The example shows the countries where the population is small and the
 
gdp is high.</div>
 
gdp is high.</div>
<div class='imper'>Show the <b>name</b> and <b>region</b> where the area is less then 2000 and the gdp is more than 5000000000</div>
+
<div class='imper'>Show the <b>name</b> and <b>continent</b> where the area is less then 2000 and the gdp is more than 5000000000</div>
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
SELECT name , region
+
SELECT name , continent
   FROM bbc
+
   FROM world
 
   WHERE population < 2000000
 
   WHERE population < 2000000
 
     AND gdp > 5000000000
 
     AND gdp > 5000000000
Line 103: Line 78:
  
 
<source lang='sql' class='ans'>
 
<source lang='sql' class='ans'>
SELECT name , region
+
SELECT name , continent
   FROM bbc
+
   FROM world
 
   WHERE area < 2000
 
   WHERE area < 2000
 
     AND gdp > 5000000000
 
     AND gdp > 5000000000
Line 110: Line 85:
 
</div>
 
</div>
  
 
+
==Scandinavia==
 
<div class='qu'>
 
<div class='qu'>
 
Checking a list The word <b>IN</b> allows us to check if an item is in a list.  
 
Checking a list The word <b>IN</b> allows us to check if an item is in a list.  
Line 117: Line 92:
 
</div>
 
</div>
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
SELECT name, population FROM bbc
+
SELECT name, population FROM world
 
   WHERE name IN ('Ireland', 'Iceland',
 
   WHERE name IN ('Ireland', 'Iceland',
 
                 'Denmark')</source>
 
                 'Denmark')</source>
  
 
<source lang='sql' class='ans'>
 
<source lang='sql' class='ans'>
SELECT name, population FROM bbc
+
SELECT name, population FROM world
 
   WHERE name IN ('Denmark', 'Finland',
 
   WHERE name IN ('Denmark', 'Finland',
 
                 'Norway', 'Sweden')</source>
 
                 'Norway', 'Sweden')</source>
 
</div>
 
</div>
  
 +
==Starts with G==
 
<div class='qu'>
 
<div class='qu'>
 
What are the countries beginning with G?
 
What are the countries beginning with G?
Line 133: Line 109:
 
<div class='imper'>Show each country that begins with G</div>
 
<div class='imper'>Show each country that begins with G</div>
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
SELECT name FROM bbc
+
SELECT name FROM world
 
   WHERE name LIKE 'D%'
 
   WHERE name LIKE 'D%'
 
</source>
 
</source>
  
 
<source lang='sql' class='ans'>
 
<source lang='sql' class='ans'>
SELECT name FROM bbc
+
SELECT name FROM world
 
   WHERE name LIKE 'G%'
 
   WHERE name LIKE 'G%'
 
</source>
 
</source>
 
</div>
 
</div>
  
 +
==Just the right size==
 
<div class='qu'>
 
<div class='qu'>
 
Which countries are not too small and not too big?
 
Which countries are not too small and not too big?
Line 148: Line 125:
 
<div class='imper'>'''Show the area in 1000 square km. Show''' ''area''/1000 '''instead of''' ''area''</div>
 
<div class='imper'>'''Show the area in 1000 square km. Show''' ''area''/1000 '''instead of''' ''area''</div>
 
<source lang='sql' class='def'>
 
<source lang='sql' class='def'>
SELECT name, area FROM bbc
+
SELECT name, area FROM world
 
   WHERE area BETWEEN 207600 AND 244820
 
   WHERE area BETWEEN 207600 AND 244820
 
</source>
 
</source>
  
 
<source lang='sql' class='ans'>
 
<source lang='sql' class='ans'>
SELECT name, area/1000 FROM bbc
+
SELECT name, area/1000 FROM world
 
   WHERE area BETWEEN 207600 AND 244820
 
   WHERE area BETWEEN 207600 AND 244820
 
</source>
 
</source>
 
</div>
 
</div>
  
 +
<div>
 
<div class="lsclear">Clear your results</div>
 
<div class="lsclear">Clear your results</div>
 +
<p><div class="quizlink">[[SELECT Quiz]]</div></p>
 +
</div>
 +
<p>You are ready for tutorial one:[[SELECT_from_WORLD_Tutorial |SELECT statements with WHERE.]]</p>
 +
  
<p>[[SELECT Quiz]]</p>
+
{{Languages}}
<p>You are ready for tutorial one:[[SELECT_from_BBC_Tutorial |SELECT statements with WHERE.]]</p>
+

Revision as of 17:40, 28 August 2013

namecontinentarea populationgdp
AfghanistanAsia6522302550010020343000000
AlbaniaEurope28748 2831741 12960000000
AlgeriaAfrica2381741 37100000 188681000000
AndorraEurope46878115 3712000000
AngolaAfrica1246700 20609294 100990000000
....

Contents

Introducing the world table of countries

This tutorial introduces SQL. We will be using the SELECT command on the table world:

Summary

The example shows the population of 'France'. Strings should be in 'single quotes';

Show the population of Germany

SELECT population FROM world
  WHERE name = 'France'
SELECT population FROM world
  WHERE name = 'Germany'

Per Capita GDP

The query shows the population density population/area for each country where the area is over 5,000,000 km2.
Show the per capita gdp: gdp/population for each country where the area is over 5,000,000 km2
.
SELECT name, population/area FROM world
  WHERE area > 5000000
SELECT name, gdp/population FROM world
  WHERE area > 5000000

Small and wealthy

Where to find some very small, very rich countries.
We use AND to ensure that two or more conditions hold true.

The example shows the countries where the population is small and the gdp is high.
Show the name and continent where the area is less then 2000 and the gdp is more than 5000000000
SELECT name , continent
  FROM world
  WHERE population < 2000000
    AND gdp > 5000000000
SELECT name , continent
  FROM world
  WHERE area < 2000
    AND gdp > 5000000000

Scandinavia

Checking a list The word IN allows us to check if an item is in a list. The example shows the name and population for the countries 'Ireland', 'Iceland' and 'Denmark'

Show the name and the population for 'Denmark', 'Finland', 'Norway', 'Sweden'
SELECT name, population FROM world
  WHERE name IN ('Ireland', 'Iceland',
                 'Denmark')
SELECT name, population FROM world
  WHERE name IN ('Denmark', 'Finland',
                 'Norway', 'Sweden')

Starts with G

What are the countries beginning with G? The word LIKE permits pattern matching - % is the wildcard. The examples shows countries beginning with D

Show each country that begins with G
SELECT name FROM world
  WHERE name LIKE 'D%'
SELECT name FROM world
  WHERE name LIKE 'G%'

Just the right size

Which countries are not too small and not too big? BETWEEN allows range checking - note that it is inclusive.

Show the area in 1000 square km. Show area/1000 instead of area
SELECT name, area FROM world
  WHERE area BETWEEN 207600 AND 244820
SELECT name, area/1000 FROM world
  WHERE area BETWEEN 207600 AND 244820
Clear your results

You are ready for tutorial one:SELECT statements with WHERE.


Language: English
Personal tools

Variants
Actions
Reference
Toolbox
Google AdSense