Index: trunk/workshop-foss4g/simple_sql.rst
===================================================================
--- trunk/workshop-foss4g/simple_sql.rst	(revision 45)
+++ trunk/workshop-foss4g/simple_sql.rst	(revision 62)
@@ -4,5 +4,7 @@
 ===============================
 
-:term:`SQL`, pour "Structured Query Language", dÃ©finit la maniÃšre d'importer et d'interroger des donnÃ©es dans une base. Vous avez dÃ©jÃ  rÃ©digÃ© du SQL lorsque nous avons crÃ©er notre premiÃšre base de donnÃ©es.  Rappel:
+:term:`SQL`, pour "Structured Query Language", dÃ©finit la maniÃšre d'importer et d'interroger des donnÃ©es dans une base. Vous avez dÃ©jÃ  rÃ©digÃ© du SQL lorsque nous avons crÃ©Ã© notre premiÃšre base de donnÃ©es.
+
+Rappel:
 
 .. code-block:: sql
@@ -10,8 +12,8 @@
    SELECT postgis_full_version();
 
-Maintenant que nous avons charger des donnÃ©es dans notre base, essayons d'utiliser SQL pour les interroger. Par exemple,
+Maintenant que nous avons chargÃ© des donnÃ©es dans notre base, essayons d'utiliser SQL pour les interroger. Par exemple,
 
-  "Quel sont les noms des quartiers de la ville de New York ?"
-  
+  "Quels sont les noms des quartiers de la ville de New York ?"
+
 Ouvrez une fenÃªtre SQL depuis pgAdmin en cliquant sur le bouton SQL
 
@@ -23,14 +25,14 @@
 
   SELECT name FROM nyc_neighborhoods;
-  
+
 et cliquez sur le bouton **Execute Query** (le triangle vert).
-  
-.. image:: ./screenshots/pgadmin_08.png  
+
+.. image:: ./screenshots/pgadmin_08.png
 
 La requÃªte s'exÃ©cutera pendant quelques (mili)secondes et retournera 129 rÃ©sultats.
 
-.. image:: ./screenshots/pgadmin_09.png  
+.. image:: ./screenshots/pgadmin_09.png
 
-Mais que c'est-il exactement passÃ© ici ? Pour le comprendre, commenÃ§ons par prÃ©senter les quatre types de requÃªtes du SQL :
+Mais que s'est-il exactement passÃ© ici ? Pour le comprendre, commenÃ§ons par prÃ©senter les quatre types de requÃªtes du SQL :
 
  * ``SELECT``, retourne des lignes en rÃ©ponse Ã  une requÃªte
@@ -38,6 +40,6 @@
  * ``UPDATE``, modifie des lignes existantes d'une table
  * ``DELETE``, supprime des lignes d'une table
- 
-Nous travaillerons principalement avec des requÃªtes de type ``SELECT``afin d'interroger les tables en utilisant des fonctions spatiales.
+
+Nous travaillerons principalement avec des requÃªtes de type ``SELECT`` afin d'interroger les tables en utilisant des fonctions spatiales.
 
 RequÃªte de type SELECT
@@ -47,70 +49,70 @@
 
   SELECT colonnes FROM donnÃ©es WHERE conditions;
-  
+
 .. note::
 
-    Pour une description exhaustive des paramÃštres possible d'une requÃªte ``SELECT``, consultez la `documentaton de PostgresSQL  <http://www.postgresql.org/docs/8.1/interactive/sql-select.html>`_.
-    
+    Pour une description exhaustive des paramÃštres possible d'une requÃªte ``SELECT``, consultez la `documentation de PostgresSQL  <http://www.postgresql.org/docs/8.1/interactive/sql-select.html>`_.
 
-Les ``colonnes`` sont soit des noms de colonnes, soit des fonctions utilisant les valeurs des colonnes. Les ``donnÃ©es`` sont soit une table seule, soit plusieures tables reliÃ©es ensemble en rÃ©alisant une jointure sur une clef ou une autre condition. Les ``conditions`` reprÃ©sentent le filtre qui restreint le nombre de lignes Ã  retourner.
+
+Les ``colonnes`` sont soit des noms de colonnes, soit des fonctions utilisant les valeurs des colonnes. Les ``donnÃ©es`` sont soit une table seule, soit plusieurs tables reliÃ©es ensemble en rÃ©alisant une jointure sur une clef ou une autre condition. Les ``conditions`` reprÃ©sentent le filtre qui restreint le nombre de lignes Ã  retourner.
 
   "Quel sont les noms des quartiers de Brooklyn ?"
 
-Nous retournons Ã  notre table ``nyc_neighborhoods`` avec le filtre en main. La table contient tout les quartiers de New York et nous voulons uniquement ceux de Brooklyn.
+Nous retournons Ã  notre table ``nyc_neighborhoods`` avec le filtre en main. La table contient tous les quartiers de New York et nous voulons uniquement ceux de Brooklyn.
 
 .. code-block:: sql
 
-  SELECT name 
-    FROM nyc_neighborhoods 
+  SELECT name
+    FROM nyc_neighborhoods
     WHERE boroname = 'Brooklyn';
 
-La requÃªte prendra Ã  nouveau quelque (mili)secondes et retournera les 23 Ã©lÃ©ments rÃ©sultants.
+La requÃªte prendra Ã  nouveau quelque (milli)secondes et retournera les 23 Ã©lÃ©ments rÃ©sultants.
 
-Parfois nous aurons besoin d'appliquer des fonctions sur le rÃ©sultats d'une de nos requÃªtes. Par exemple,
+Parfois, nous aurons besoin d'appliquer des fonctions sur le rÃ©sultat d'une de nos requÃªtes. Par exemple,
 
   "Quel est le nombre de lettres dans les noms des quartiers de Brooklyn ?"
-  
+
 Heureusement PostgreSQL fournit une fonction calculant la longueur d'une chaÃ®ne de caractÃšres : :command:`char_length(string)`.
 
 .. code-block:: sql
 
-  SELECT char_length(name) 
-    FROM nyc_neighborhoods 
+  SELECT char_length(name)
+    FROM nyc_neighborhoods
     WHERE boroname = 'Brooklyn';
 
-Bien souvent nous sommes moins interressÃ©s par une ligne particuliÃšre mais plus par un calcul statistique sur l'ensemble rÃ©sultant. Donc, connaitre la longueur des noms de quartiers est moins interressant que de calculer la moyenne des ces longueurs. Les fonctions qui renvoit un rÃ©sultat unique en utilisant un ensemble de valeurs sont appelÃ©e des "fonctions d'aggrÃ©gations".
+Bien souvent, nous sommes moins interessÃ©s par une ligne particuliÃšre que par un calcul statistique sur l'ensemble rÃ©sultant. Donc, connaÃ®tre la longueur des noms de quartiers est moins intÃ©ressant que de calculer la moyenne de ces longueurs. Les fonctions qui renvoient un rÃ©sultat unique en utilisant un ensemble de valeurs sont appelÃ©es des "fonctions d'aggrÃ©gations".
 
-PostgreSQL fournit un ensemble de fonctions d'aggrÃ©gations, parmis lesquelles :command:`avg()` pour calculer la moyenne, and :command:`stddev()` pour l'Ã©cart type.
+PostgreSQL fournit un ensemble de fonctions d'aggrÃ©gations, parmi lesquelles :command:`avg()` pour calculer la moyenne, and :command:`stddev()` pour l'Ã©cart type.
 
-  "Quel est le nombre moyen et l'Ã©cart type du nombre de lettre dans le noms des quartier de Brooklyn ?"
-  
+  "Quel est le nombre moyen et l'Ã©cart type du nombre de lettres dans le nom des quartier de Brooklyn ?"
+
 .. code-block:: sql
 
-  SELECT avg(char_length(name)), stddev(char_length(name)) 
-    FROM nyc_neighborhoods 
+  SELECT avg(char_length(name)), stddev(char_length(name))
+    FROM nyc_neighborhoods
     WHERE boroname = 'Brooklyn';
-  
+
 ::
 
-           avg         |       stddev       
+           avg         |       stddev
   ---------------------+--------------------
    11.7391304347826087 | 3.9105613559407395
 
-Les fonctions d'agrÃ©gation dans notre dernier exemple sont appliquÃ©es Ã  chaque ligne de l'ensemble des rÃ©sultats. Comment faire si nous voulons rassembler des donnÃ©es ? Pour cela nous utilisons la clause ``GROUP BY``. Les fonctions d'agrÃ©gation ont souvent besoin d'une clause ``GROUP BY`` pour regrouper les Ã©lÃ©ments en utilisant une ou plusieures colonnes.
+Les fonctions d'agrÃ©gation dans notre dernier exemple sont appliquÃ©es Ã  chaque ligne de l'ensemble des rÃ©sultats. Comment faire si nous voulons rassembler des donnÃ©es ? Pour cela, nous utilisons la clause ``GROUP BY``. Les fonctions d'agrÃ©gation ont souvent besoin d'une clause ``GROUP BY`` pour regrouper les Ã©lÃ©ments en utilisant une ou plusieurs colonnes.
 
-  "Quel est la moyenne des les noms de quartier de New York, renvoyer par quartiers ?"
+  "Quel est la moyenne du nombre de caractÃšres des noms de quartiers et l'Ã©cart-type du nombre de caractÃšres des noms de quartiers, renvoyÃ© par section de New York ?"
 
 .. code-block:: sql
 
-  SELECT boroname, avg(char_length(name)), stddev(char_length(name)) 
-    FROM nyc_neighborhoods 
+  SELECT boroname, avg(char_length(name)), stddev(char_length(name))
+    FROM nyc_neighborhoods
     GROUP BY boroname;
- 
 
-Nous ajoutons la colonne ``boroname`` dans le rÃ©sultat afin de pouvoir dÃ©terminer quelle valeur statistique s'applique Ã  quel quartier. Dans une requÃªte agrÃ©gÃ©e, vous pouvez seulement retourner les colonnes qui sont (a) membre de la clause de regroupement ou (b) des fonctions d'agrÃ©gation.
-  
+
+Nous ajoutons la colonne ``boroname`` dans le rÃ©sultat afin de pouvoir dÃ©terminer quelle valeur statistique s'applique Ã  quelle section. Dans une requÃªte agrÃ©gÃ©e, vous pouvez seulement retourner les colonnes qui sont (a) membre de la clause de regroupement ou (b) des fonctions d'agrÃ©gation.
+
 ::
 
-     boroname    |         avg         |       stddev       
+     boroname    |         avg         |       stddev
   ---------------+---------------------+--------------------
    Brooklyn      | 11.7391304347826087 | 3.9105613559407395
@@ -119,5 +121,5 @@
    Queens        | 11.6666666666666667 | 5.0057438272815975
    Staten Island | 12.2916666666666667 | 5.2043390480959474
-  
+
 Liste de fonctions
 ------------------
@@ -125,7 +127,6 @@
 `avg(expression) <http://www.postgresql.org/docs/current/static/functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE>`_: fonction d'agrÃ©gation de PostgreSQL  qui retourne la valeur moyenne d'une colonne.
 
-`char_length(string) <http://www.postgresql.org/docs/current/static/functions-string.html>`_: fonction s'applicant aux chaÃ®nes de caractÃšre de PostgreSQL qui retourne le nombre de lettres dans une chaÃ®ne.
+`char_length(string) <http://www.postgresql.org/docs/current/static/functions-string.html>`_: fonction s'appliquant aux chaÃ®nes de caractÃšre de PostgreSQL qui retourne le nombre de lettres dans une chaÃ®ne.
 
 `stddev(expression) <http://www.postgresql.org/docs/current/static/functions-aggregate.html#FUNCTIONS-AGGREGATE-STATISTICS-TABLE>`_: fonction d'aggrÃ©gation de PostgreSQL qui retourne l'Ã©cart type d'un ensemble de valeurs.
-  
-  
+
