2011/2/24 M∡rtin Koppenhoefer <dieterdre...@gmail.com>: > Scusate, se sono un po' OT, ho fatto delle prove e non capisco il risultato: > > echo "select count(oneway='yes') from planet_osm_roads" | psql -d gis > count > -------- > 480928 > > echo "select count(*) from planet_osm_roads where oneway='yes';" | psql -d gis > count > -------- > 460284 > > > come mai la risposta è diversa? Sono andato avanti, qui rimane uguale: > > echo "select count(oneway='yes' or oneway='true') from > planet_osm_roads" | psql -d gis > count > -------- > 480928 > > mentre qui aumenta: > > echo "select count(*) from planet_osm_roads where oneway='yes' or > oneway='true'" | psql -d gis > count > -------- > 470139 > > > echo "select count(*) from planet_osm_roads where oneway='yes' or > oneway='true' or oneway='1'" | psql -d gis > count > -------- > 471498 > > > C'è qualcuno tra di voi chi sa perché ricevo risposte diverse? (Per le > richiesto dove cerco "true" e "1" nell WHERE è chiaro, ma perché > l'espressione dentro al count crea un risultato leggermente diverso?
Non ho sottomano Postgresql per fare prove. Di solito con Oracle non metto mai il filtro all'interno della COUNT: va messo nella WHERE. Dai tuoi numeri, le uniche "stranezze" sono: select count(oneway='yes') from planet_osm_roads: 480928 select count(oneway='yes' or oneway='true') from planet_osm_roads: 480928 Questi numeri sono uguali tra loro e maggiori di tutti gli altri Dalla documentazione di Postgresql: http://www.postgresql.org/docs/8.2/static/functions-aggregate.html "number of input rows for which the value of expression is not null" mi chiedo se quelle SELECT non stiano in effetti restituendo il numero totale di record dove "oneway IS NOT NULL" Cioè io sospetto che: SELECT count(1) FROM planet_osm_roads WHERE oneway = 'yes' : 460284 SELECT count(1) FROM planet_osm_roads WHERE oneway = 'yes' OR oneway = 'true': 470139 SELECT count(1) FROM planet_osm_roads WHERE oneway = 'yes' OR oneway = 'true' OR oneway = '1' : 471498 SELECT count(1) FROM planet_osm_roads WHERE oneway IS NOT NULL : 480928 (ci sono anche oneway='no' e tanti altri possibili valori...) Ciao, Federico _______________________________________________ Talk-it mailing list Talk-it@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-it