back to first page ..
back to CookBook Eda
back to Obstacle pressure
Problèmes recensés dans la table geobs2010.franchissabilite_piscicole
Colonne fra_note
- Toutes les valeurs ne sont pas des numériques
- Certaines valeurs sont négatives
- Caractères spéciaux : ?
- Toutes les cellules ne sont pas remplies
- Certaines cellules contiennent une valeur numérique mais avec d'autre caractères avant ou après (espace, .)
- Un intervalle de note peut-être donné : 0 à 4, 0 ou 4 (avec une observation), 5/10, 1 voire 2
- Des observations sont données mais pas de notes associées
- Certaines valeurs comportent des , au lieu d'un . --> remplacer les , par des points
--> ?, 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
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)
CREATE FUNCTION isnumeric(text) RETURNS boolean AS ' SELECT $1 ~ ''^(-)?[0-9]+$'' ' LANGUAGE '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
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
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
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ù :
select fra_note from geobs2010.franchissabilite_piscicole where fra_note ~'^(-)?[0-9]*\\.?[0-9]+$' order by fra_note;
Doublons dans la table franchissabilite_piscicole
Requête pour récuperer le nb d'obstacle, la somme des hauteurs
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;
Last modified 13 years ago
Last modified on May 25, 2012 1:50:34 PM