Select AVG
ik heb het een en ander al gevonden hier over Select AVG
maar ik heb even een vraagje om dat ik steeds 0 krijg als uitkomst kan je ook deze functie gebruiken als de data opgeslagen staat als varchar ook al staan er alleen getallen in?
maar ik heb even een vraagje om dat ik steeds 0 krijg als uitkomst kan je ook deze functie gebruiken als de data opgeslagen staat als varchar ook al staan er alleen getallen in?
Gesponsorde koppelingen:
Dat lijkt me een uitstekende conclusie: je krijgt 0.
select avg(cast(veldnaam as signed))
select avg(cast(veldnaam as signed))
hoi Bas maar waarom krijg ik 0? thats the question
ik gebruik nu het volgende
ik gebruik nu het volgende
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$result = mysql_query("SELECT AVG('sl131') AS gemiddelde FROM data") or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row['gemiddelde'];
?>
$result = mysql_query("SELECT AVG('sl131') AS gemiddelde FROM data") or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row['gemiddelde'];
?>
Gewijzigd op 03/12/2010 14:01:06 door Nira Duursma
die query vraagt om het gemiddelde van de tekst 'sl131'. Om een veldnaam moeten geen quotes. Verder, als dat een varchar-veld is zoals je zegt, raad ik mijn suggestie aan. Probeerde je die al uit?
kun je niet van varchar naar int gaan? Je moet het probleem wel bij de bron aanpakken als dat mogelijk is.
@mark je bedoelt in de tabel zeker?
We weten in ieder geval wat het veld betekent... niet. Wat een bijzondere veldnaam. Waar komt die vandaan?
We weten in ieder geval wat het veld betekent... niet. Wat een bijzondere veldnaam. Waar komt die vandaan?
:p De kolom zul je bedoelen. Maar ja die bedoel ik. Anyway als ik op google sl131 intyp gaat het van goud tot sheet labels dus ik zou het niet weten.
"de kolom"?! krijgen we nou? Het is een *attribuut* hoor :D
Ik ben een beetje scheef aan het lezen vandaag, we hebben het in elk geval over hetzelfde.
helaas gaat het niet om goud was het maar zo..
@ Bas hoe moet ik die select avg(cast(veldnaam as signed)) zien
SELECT( waar komt die cast vandaan(sl131 as signed))
@ Bas hoe moet ik die select avg(cast(veldnaam as signed)) zien
SELECT( waar komt die cast vandaan(sl131 as signed))
'cast' is in mysql ingebouwd. (ook in postgres for that matter). Zie manual. Ik weet nog een manier
maar die vind ik minder fraai.
ik heb nu:
maar er komt nix uit?
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$result = mysql_query("SELECT AVG(CAST(sl131 AS SIGNED)) FROM data ") or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row['SIGNED'];
?>
$result = mysql_query("SELECT AVG(CAST(sl131 AS SIGNED)) FROM data ") or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row['SIGNED'];
?>
maar er komt nix uit?
Gewijzigd op 03/12/2010 14:56:13 door Nira Duursma
klopt, er is ook geen veld of alias 'signed'.
nu komt er wel een getal uit :)
maar........ ik ben er nog niet
de getallen in de database staan er als
10,78
10,40
11,34
enz dan krijg ik weer 0,00
maar........ ik ben er nog niet
de getallen in de database staan er als
10,78
10,40
11,34
enz dan krijg ik weer 0,00
Maak dan gewoon echt een float ipv een varchar, zo hoort het en zijn al je problemen verdwenen en hoef je ook geen vieze pleisters te plakken.
Gewijzigd op 03/12/2010 15:43:32 door M Ypma
Nira Duursma op 03/12/2010 15:38:45:
de getallen in de database staan er als
10,78
10,40
11,34
10,78
10,40
11,34
10,78 is GEEN getal, maar het zijn TWEE getallen met een komma ertussen.



