[1] | 1 | .. _simple_sql_exercises: |
---|
| 2 | |
---|
[37] | 3 | Partie 7 : Exercices simples de SQL |
---|
[17] | 4 | =================================== |
---|
[1] | 5 | |
---|
[62] | 6 | En utilisant la table ``nyc_census_blocks``, répondez au questions suivantes (et n'allez pas directement aux réponses ! ). |
---|
[1] | 7 | |
---|
[62] | 8 | Vous trouverez ci-dessous des informations utiles pour commencer. Référez-vous à la partie :ref:`A propos des nos données<about_data>` pour la définition de notre table ``nyc_census_blocks``. |
---|
[1] | 9 | |
---|
| 10 | .. list-table:: |
---|
| 11 | :widths: 20 80 |
---|
| 12 | |
---|
| 13 | * - **blkid** |
---|
[37] | 14 | - Un code à 15 chiffres qui définit de maniÚre unique chaque **bloc** ressencé . Ex: 360050001009000 |
---|
[1] | 15 | * - **popn_total** |
---|
[37] | 16 | - Nombre total de personnes dans un bloc ressensé |
---|
[1] | 17 | * - **popn_white** |
---|
[17] | 18 | - Nombre de personnes se déclarant "blancs" |
---|
[1] | 19 | * - **popn_black** |
---|
[17] | 20 | - Nombre de personnes se déclarant "noirs" |
---|
[18] | 21 | * - **popn_nativ** |
---|
[17] | 22 | - Nombre de personnes se déclarant comme "nés aux états-unis" |
---|
[1] | 23 | * - **popn_asian** |
---|
[17] | 24 | - Nombre de personne se déclarant comme "asiatiques" |
---|
[1] | 25 | * - **popn_other** |
---|
[17] | 26 | - Nombre de personne se déclarant d'une autre catégorie |
---|
[1] | 27 | * - **hous_total** |
---|
[17] | 28 | - Nombre de piÚces appartements |
---|
[1] | 29 | * - **hous_own** |
---|
[17] | 30 | - Nombre de propriétaires occupant les appartements |
---|
[1] | 31 | * - **hous_rent** |
---|
[17] | 32 | - Nombre de locations disponibles |
---|
[1] | 33 | * - **boroname** |
---|
[17] | 34 | - Nom du quartier de New York. Manhattan, The Bronx, Brooklyn, Staten Island, Queens |
---|
[1] | 35 | * - **the_geom** |
---|
[37] | 36 | - Polygone délimitant le bloc |
---|
[1] | 37 | |
---|
[17] | 38 | Ici se trouvent certaines des fonctions d'aggrégation qui vous seront utiles pour répondre aux questions : |
---|
[1] | 39 | |
---|
[62] | 40 | * avg() - la moyenne des valeurs dans un ensemble d'enregistrements |
---|
| 41 | * sum() - la somme des valeurs d'un ensemble d'enregistrements |
---|
| 42 | * count() - le nombre d'éléments contenus dans un ensemble d'enregistrements. |
---|
[1] | 43 | |
---|
[37] | 44 | Maintenant les questions : |
---|
[1] | 45 | |
---|
[17] | 46 | * **"Quelle est la population de la ville de New York ?"** |
---|
[62] | 47 | |
---|
[1] | 48 | .. code-block:: sql |
---|
[62] | 49 | |
---|
[1] | 50 | SELECT Sum(popn_total) AS population |
---|
| 51 | FROM nyc_census_blocks; |
---|
[62] | 52 | |
---|
| 53 | :: |
---|
| 54 | |
---|
| 55 | 8008278 |
---|
| 56 | |
---|
| 57 | .. note:: |
---|
| 58 | |
---|
| 59 | Qu'est-ce que ce ``AS`` dans la requête ? vous pouvez donner un nom à une table ou à des colonnes en utilisant un alias. Les alias permettent de rendre les requêtes plus simple à écrire et à lire. Donc au lieu que notre colonne résultat soit nommée ``sum`` nous utilisons le **AS** pour la renommer en ``population``. |
---|
| 60 | |
---|
[17] | 61 | * **"Quelle est la population du Bronx ?"** |
---|
[1] | 62 | |
---|
| 63 | .. code-block:: sql |
---|
[62] | 64 | |
---|
[1] | 65 | SELECT Sum(popn_total) AS population |
---|
| 66 | FROM nyc_census_blocks |
---|
| 67 | WHERE boroname = 'The Bronx'; |
---|
[62] | 68 | |
---|
| 69 | :: |
---|
| 70 | |
---|
| 71 | 1332650 |
---|
| 72 | |
---|
| 73 | * **"Quelle est en moyenne le nombre de personnes vivant dans chaque appartement de la ville de New York ?"** |
---|
| 74 | |
---|
[1] | 75 | .. code-block:: sql |
---|
| 76 | |
---|
| 77 | SELECT Sum(popn_total)/Sum(hous_total) AS popn_per_house |
---|
| 78 | FROM nyc_census_blocks; |
---|
| 79 | |
---|
[62] | 80 | :: |
---|
| 81 | |
---|
| 82 | 2.6503540522400804 |
---|
| 83 | |
---|
[17] | 84 | * **"Pour chaque quartier, quel est le pourcentage de population blanche ?"** |
---|
[1] | 85 | |
---|
| 86 | .. code-block:: sql |
---|
| 87 | |
---|
[62] | 88 | SELECT |
---|
| 89 | boroname, |
---|
[1] | 90 | 100 * Sum(popn_white)/Sum(popn_total) AS white_pct |
---|
| 91 | FROM nyc_census_blocks |
---|
| 92 | GROUP BY boroname; |
---|
| 93 | |
---|
[62] | 94 | :: |
---|
| 95 | |
---|
| 96 | boroname | white_pct |
---|
[1] | 97 | ---------------+--------------------- |
---|
| 98 | Brooklyn | 41.2005552206888663 |
---|
| 99 | The Bronx | 29.8655310846808990 |
---|
| 100 | Manhattan | 54.3594013771837665 |
---|
| 101 | Queens | 44.0806610271290794 |
---|
| 102 | Staten Island | 77.5968611401579346 |
---|
[62] | 103 | |
---|
[17] | 104 | Liste des fonctions |
---|
| 105 | ------------------- |
---|
[1] | 106 | |
---|
[62] | 107 | `avg(expression) <http://www.postgresql.org/docs/8.2/static/functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE>`_: fonction d'aggrégation de PostgreSQL qui renvoie la moyenne d'un ensemble de nombres. |
---|
[1] | 108 | |
---|
[62] | 109 | `count(expression) <http://www.postgresql.org/docs/8.2/static/functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE>`_: une fonction d'aggrégation de PostgreSQL qui retourne le nombre d'éléments dans un ensemble. |
---|
[1] | 110 | |
---|
[17] | 111 | `sum(expression) <http://www.postgresql.org/docs/8.2/static/functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE>`_: une fonction d'aggrégation de PostgreSQL qui retourne la somme des valeurs numériques d'un ensemble. |
---|
[62] | 112 | |
---|