Exercice 6 et sa solution

Documents pareils
5 - SQL - Bases de données

Le langage SQL Rappels

Cours 4 : Agrégats et GROUP BY

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

FORD C-MAX + FORD GRAND C-MAX CMAX_Main_Cover_2013_V3.indd /08/ :12

Langage SQL : créer et interroger une base

Le Langage SQL version Oracle

MODE OPERATOIRE OPENOFFICE BASE

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

FileMaker 13. Guide de référence SQL

Cours Bases de données 2ème année IUT

TD n 10 : Ma première Base de Données

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Le Langage De Description De Données(LDD)

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Objectifs du TP : Initiation à Access

Olivier Mondet

Systèmes de Gestion de Bases de Données

1 Introduction et installation

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Excel avancé. Frédéric Gava (MCF)

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

SQL Server et Active Directory

Base de données relationnelle et requêtes SQL

Création de Sous-Formulaires

Cours SQL. Base du langage SQL et des bases de données

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Optimisation SQL. Quelques règles de bases

TP Bases de données réparties

Mysql. Les requêtes préparées Prepared statements

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Session S12 Les bases de l optimisation SQL avec DB2 for i

Laurent Jégou 07/12/2012 M2 Sigma

Présentation Windows Azure Hadoop Big Data - BI

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

BTS/CGO P10 SYSTEME INFORMATION Année

Java DataBaseConnectivity

1. Introduction Création d'une requête...2

Laurent Jégou novembre 2014 M2 Sigma U351_33 WebMapping. Séance 2 Les systèmes de gestion de bases de données spatiales : L'exemple de PostGIS

Les bases de l optimisation SQL avec DB2 for i

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

SOMMAIRE. Travailler avec les requêtes... 3

KPI (Key Performance Indicator) dans MOSS

Auto-évaluation SQL. Document: f0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Utilisation du BDE pour la maintenance des fichiers DBF de l'application TopoCad:

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

1. Base de données SQLite

UNITÉS ET MESURES UNITÉS DE MESURE DES LONGUEURS. Dossier n 1 Juin 2005

SQL Historique

Évaluation et optimisation de requêtes

Introduction à JDBC. Accès aux bases de données en Java

SQL Server ressource SOMMAIRE

Exercices sur SQL server 2000

PostGIS, un module de PostgreSQL pour les données spatiales

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

DOSSIER DE SPECIFICATIONS FONCTIONNELLES ET TECHNIQUES MISE EN PLACE DE LA GESTION ELECTRONIQUE DE LA CNCE

Bases de Données relationnelles et leurs systèmes de Gestion

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Devoir Data WareHouse

MySQL / SQL EXEMPLES

EXCEL TUTORIEL 2012/2013

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Bases de données relationnelles

Baromètre local de conjoncture des arrondissements de Bar-sur-Aube et Chaumont N 4

Durée : 4 heures coefficient : 4 Le sujet se présente sous la forme de deux dossiers indépendants

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Initiation à la programmation en Python

Présentation du langage et premières fonctions

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Les Utilisateurs dans SharePoint

A.-M. Cubat PMB - Import de notices à partir d un tableur Page 1 Source :

Exercices et solutions

Mysql avec EasyPhp. 1 er mars 2006

LA RUBRIQUE ARCHIVES EN LIGNE DU SITE INTERNET - MODE D EMPLOI

Cours Apl 11 - Introduction à la gestion des écrans

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

1/ Présentation de SQL Server :

Excel 2010 Intermediaire

Encryptions, compression et partitionnement des données

SAGE Financements Notice de mise à jour via internet

Guide de configuration de la Voix sur IP

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

I. MySQL : Serveur et SGBD

Introduction au Système de Gestion de Base de Données et aux Base de Données

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Comment Définir une Plage de données Pour Utiliser Fonctions de Filtres et de Tris

Bases de données Cours 4 : Le langage SQL pour ORACLE

Compte-rendu technique complet et détaillé des cookies

Transcription:

Exercice 6 et sa solution QGIS Perfectionnement version 2.1 9 mars 2015

Table des matières I - Exercice : Exercice 6 : sélections SQL avec DBManager 5 Solution des exercices 7 3

Exercice : Exercice I - 6 : sélections SQL avec DBManager I Réaliser ses premières requêtes SQL avec DBManager sous QGIS en utilisant les tables de 'QGIS_perf_sandbox.sqlite' avec DBManager réaliser les requêtes suivantes : Question 1 [Solution n 1 p 9] Q1 : sélectionner tous les IRIS (table IRIS_extrait72) de la commune de LA FLECHE (colonne Nom_Com). nb : On fera attention à l'écriture FLECHE (LA) dans la table COMMUNE, avec deux espaces entre FLECHE et (LA). Utiliser la table iris_extrait72 et mettre une condition après la clause WHERE permettant d'indiquer qu'on se limite à la commune de la Flèche. Question 2 [Solution n 2 p 9] Q2 : sélectionner les communes du département de la Sarthe de plus de 1500 habitants en affichant un tableau avec les noms de communes et leur population. Utiliser la table commune, sélectionner les champs demandés (nom des communes et population) dans la clause SELECT. Mettre deux conditions 'département de la Sarthe' ET 'population de plus de 1500 habitants' dans la clause WHERE. Question 3 [Solution n 3 p 9] Q3 : sélectionner les communes de la table COMMUNE dont le statut n'est pas cheflieu de canton et afficher les colonnes NOM_COMM en lui donnant comme alias NOM et les colonnes, STATUT, POPULATION et SUPERFICIE On peut traduire le "n 'est pas" par l'utilisation de NOT Question 4 [Solution n 4 p 9] Q4 : sélectionner les différents noms des tronçons comportant le nom 'ruisseau' dans 5

Exercice : Exercice 6 : sélections SQL avec DBManager la colonne TOPONYME de la table TRONCON_HYDROGRAPHIQUE Utiliser la table troncon_hydrographique. On pourra utiliser LIKE pour indiquer que le nom de tronçon doit contenir la chaîne 'ruisseau'. Question 5 [Solution n 5 p 10] Q5 : à partir de la table COMMUNE, calculer pour chaque département ; la population totale, la densité moyenne de population des communes = moyenne(population commune /superficie commune) arrondie à deux décimales, la population de la commune la plus peuplée et celle de la moins peuplée, la superficie moyenne des communes. Le résultat doit être : exo6 - question 4 on cherche des sommes, moyennes,...par département il faut donc utiliser un GROUP BY (agrégation) avec comme critère le nom de département (NOM_DEPT). Qui dit agrégation implique automatiquement l'utilisation de fonctions d'agrégation...on utilisera les fonctions d'agrégation donnant la somme, la moyenne, le maximum et le minimum. Question 6 [Solution n 6 p 10] Q6 : quels sont les surfaces (en km2) et périmètres (en km), arrondis à deux chiffres après la virgule, des communes du département de la Sarthe? trouver la fonction géométrique qui renvoie une aire, et celle qui renvoie un périmètre. Ces fonctions ne prennent pas de paramètres d'unités, il faut donc faire la conversion soit même par une division. nb : pour spatialite on fera attention à ne pas utiliser length() qui renvoi la longueur d'une chaîne de caractères. Dans les dernières versions on utilisera la même fonction que sous PostGIS pour renvoyer le périmètre. Question 7 [Solution n 7 p 10] Q7 : sélectionner le nombre de tronçons de la 'rivière le loir', par classe de largeur (colonne LARGEUR) Il faut 'compter' le nombre de tronçons, donc utiliser une agrégation avec la fonction d'agrégation qui permet de compter. il y a 3 tronçons dans la classe 0 à 15 mètres et 29 dans la classe plus de 50 mètres. 6

Exercice : Exercice 6 : sélections SQL avec DBManager Question 8 [Solution n 8 p 10] Q8 : quelle est la longueur de la 'rivière le loir' par type de largeur sur ce jeu de données? Il faut partir de la requête précédente et ajouter une colonne qui va calculer la somme de la longueur des tronçons... on utilisera la fonction st_length qui donne la longueur d'un objet linéaire. 7

Solution des exercices > Solution n 1 (exercice p. 5) SELECT * FROM iris_extrait72 WHERE Nom_com LIKE '%FLECHE%' On peut aussi utiliser le code INSEE de la commune : SELECT * FROM IRIS_extrait72 WHERE DepCom = '72154' On doit obtenir un tableau de 7 lignes avec colonne Nom_Com toujours égale à FLECHE (LA). > Solution n 2 (exercice p. 5) SELECT nom_comm, population FROM commune WHERE population > 1500 AND nom_dept='sarthe' On doit obtenir un tableau de 2 lignes : MALICORNE-SUR-SARTHE : 2000 LA FLECHE : 15400 > Solution n 3 (exercice p. 5) SELECT nom_comm AS nom,statut, population, superficie FROM commune WHERE NOT(statut = 'Chef-lieu de canton') autres syntaxes possible : SELECT nom_comm AS nom,statut, population, superficie FROM commune WHERE statut <> 'Chef-lieu de canton' SELECT nom_comm AS nom,statut, population, superficie FROM commune WHERE statut IS NOT 'Chef-lieu de canton' On doit obtenir un tableau de 18 lignes pour lesquelles le statut est commune simple ou Sous-préfecture. > Solution n 4 (exercice p. 5) SELECT DISTINCT toponyme FROM troncon_hydrographique WHERE toponyme LIKE '%ruisseau%' la clause DISTINCT permet de supprimer les doublons dans la réponse (on ne s'intéresse ici qu'au tableau de résultat et pas aux objets géographiques). On obtient un tableau de 10 lignes. Le toponyme doit contenir 'ruisseau'. > Solution n 5 (exercice p. 6) 9

Solution des exercices SELECT nom_dept, sum(population) AS population_dept, round(avg(cast(population as float)/superficie),2) AS densite_moy_communes, max(population) AS pop_max_commune, min(population) AS pop_min_commune, round(avg(superficie),2) AS surface_moy_commune FROM commune GROUP BY nom_dept nb : le cast n'est pas utile si on utilise PostGIS au lieu de spatialite. > Solution n 6 (exercice p. 6) SELECT nom_comm, round(st_area(geometry)/1000000,2) AS SURFACE_km2, round(st_perimeter(geometry)/1000,2) AS PERIMETRE_km FROM commune WHERE nom_dept = 'SARTHE' La fonction de calcul retourne une valeur dans les unités de la projection qui est ici le mètre, d'où la nécessaire division pour convertir dans les unités demandées. nb : La fonction ST_perimeter() n'est pas disponible dans la version de spatialite fournie avec QGIS 1.8, on utilise alors Glength(). Elle est disponible dans les dernières versions (QGIS > 2.2). sous postgis on écrira : SELECT nom_comm, round((st_area(geom)/1000000) :: numeric,2) AS SURFACE_km2, round((st_perimeter(geom)/1000) :: numeric,2) AS PERIMETRE_km FROM commune WHERE nom_dept = 'SARTHE' On obtient un tableau de 16 lignes. Pour ARTHEZE ont doit obtenir une surface de 8.7 km2 et un périmètre de 15.59 km. > Solution n 7 (exercice p. 6) SELECT toponyme, count(*) AS nbre_troncons, largeur FROM troncon_hydrographique WHERE toponyme = 'rivière le loir' GROUP BY largeur on doit obtenir 3 tronçons de 0 à 15 mètres et 29 tronçons de plus de 50 mètres. Complément La fonction count() accepte des expressions comme paramètre... on peut par exemple écrire SELECT count(distinct toponyme) from TRONCON_HYDROGRAPHIQUE qui donne 13 toponymes différents dans la table TRONCON_HYDROGRAPHIQUE > Solution n 8 (exercice p. 7) SELECT LARGEUR, TOPONYME,round(sum(ST_LENGTH(Geometry))/1000,4) AS Longueur_km FROM TRONCON_HYDROGRAPHIQUE WHERE TOPONYME = 'rivière le loir' GROUP BY LARGEUR On doit obtenir : de 0 à 15 mètres : 0.7981 km plus de 50 mètres : 19.3578 km 10