back to first page [..] [[BR]] back to ["CookBook Eda"] [[BR]] back to ["Obstacle pressure"] [[BR]] = Problèmes recensés dans la table geobs2010.franchissabilite_piscicole = == Colonne fra_note == - Toutes les valeurs ne sont pas des numériques[[BR]] - Certaines valeurs sont négatives[[BR]] - Caractères spéciaux : ?[[BR]] - Toutes les cellules ne sont pas remplies[[BR]] - Certaines cellules contiennent une valeur numérique mais avec d'autre caractères avant ou après (espace, .)[[BR]] - Un intervalle de note peut-être donné : 0 à 4, 0 ou 4 (avec une observation), 5/10, 1 voire 2[[BR]] - Des observations sont données mais pas de notes associées[[BR]] - Certaines valeurs comportent des , au lieu d'un . --> remplacer les , par des points[[BR]] --> ?, cellule vide à remplacer par : NULL, NA ? === Création d'une fonction permettant de récupérer les données qui sont des valeurs numériques positives === http://en.wikipedia.org/wiki/Regular_expression {{{ #!sql CREATE FUNCTION isnumeric(text) RETURNS boolean AS ' SELECT $1 ~ ''^[0-9]+$'' ' LANGUAGE 'sql'; }}} === Création d'une fonction permettant de récupérer les données numériques (valeurs positives et négatives) === {{{ #!sql CREATE FUNCTION isnumeric(text) RETURNS boolean AS ' SELECT $1 ~ ''^(-)?[0-9]+$'' ' LANGUAGE 'sql'; }}} {{{ #!sql select isnumeric(fra_note) as notenum, fra_note from geobs2010.franchissabilite_piscicole where isnumeric(fra_note)='f' order by fra_note; }}} 834 lignes qui ne comportent pas de notes ou dont les notes posent problème === Substring permet sélectionner le(les) nième caractères === -- selection du premier character dans la colonne fra_note pour avoir le premier chiffre car des commentaires sont ajoutés après les notes {{{ #!sql select fra_note, substring(fra_note from 1 for 1) as note from geobs2010.franchissabilite_piscicole; }}} === Replace permet de remplacer un caractère ou chaine de caractère par autre chose === {{{ #!sql select fra_note, replace(fra_note,'?','NULL') as note from geobs2010.franchissabilite_piscicole order by fra_note; }}} === Remplacement de la virgule par un point === J'ai considéré que 0,3 équivaut au nombre 0.3 et non pas à un interval {{{ #!sql select replace(fra_note,',','.') as note, fra_note from geobs2010.franchissabilite_piscicole; }}} === Récupérer toutes les donnés avec des nombres décimaux === NB : la fonction ne fonctionne plus si on lui donne cette expression {{{ '^(-)?[0-9]*\\.?[0-9]+$' }}} d'où :[[BR]] {{{ #!sql select fra_note from geobs2010.franchissabilite_piscicole where fra_note ~'^(-)?[0-9]*\\.?[0-9]+$' order by fra_note; }}} == Doublons dans la table franchissabilite_piscicole == ["Franchissabilite piscicole"] == Requête pour récuperer le nb d'obstacle, la somme des hauteurs == {{{ #!sql select count(*) as nb_dams, sum(ref_hauteur_chute) as c_height, sum(ref_hauteur_terrain) as c_height_terrain, gid as gid from geobs2010.obstacle_referentiel r natural join geobs2010.roe_ccm_300 group by gid; }}}