wiki:Problèmes rencontrés et requêtes

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

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