Beste mede tweakers!
Even een (voor pro's) waarschijnlijk erg makkelijk vraagstuk, maar ik ben al uren aan het klooien.
Ik heb een tabel:
groepnummer,totaaltelling,gemiddelde.
entries zien er zo uit:
3300,20,<leeg>
3300,40,<leeg>
1200,10,<leeg>
1200,20,<leeg>
<knip veeeel entries>
Wat ik wil doen is de hele tabel updaten, alle entries, en er PER groepnummer een gemiddelde aan toevoegen, en wel het gemiddelde van de waarde 'totaaltelling' voor alle entries van DIE groep specifiek.
Dus het moet worden:
3300,20,30
3300,40,30
1200,10,15
1200,20,15
Nu heb ik even een vieze hack via bash gemaakt, maar tabellen zijn groot en dit performed totaal niet.
#!/bin/sh
IFS=$'\n'
# lijst met groepnummers maken
for i in `/usr/sbin/mijndb.sh "select distinct groepnummer from tabel;"`
do
# bereken per groep het gemiddelde
gemid=`/usr/sbin/mijndb.sh "select round(avg(totaaltelling)) from tabel where groepnummer='$i';"`
# zet gemiddelde terug in de entries van DIE groep.
/usr/sbin/mijndb.sh "update tabel set gemiddelde='$gemid' where groepnummer='$i';"
done
Kan een van de heren tweakers mij helpen? Ik zit al uren te googlen/fora te lezen, maar het is niet mijn vakgebied ;-(
Dit moet toch binnen SQL op te lossen zijn met een update/join met een of andere recursieve sub-select o.i.d. ??
Thanks
O2.
Even een (voor pro's) waarschijnlijk erg makkelijk vraagstuk, maar ik ben al uren aan het klooien.
Ik heb een tabel:
groepnummer,totaaltelling,gemiddelde.
entries zien er zo uit:
3300,20,<leeg>
3300,40,<leeg>
1200,10,<leeg>
1200,20,<leeg>
<knip veeeel entries>
Wat ik wil doen is de hele tabel updaten, alle entries, en er PER groepnummer een gemiddelde aan toevoegen, en wel het gemiddelde van de waarde 'totaaltelling' voor alle entries van DIE groep specifiek.
Dus het moet worden:
3300,20,30
3300,40,30
1200,10,15
1200,20,15
Nu heb ik even een vieze hack via bash gemaakt, maar tabellen zijn groot en dit performed totaal niet.
#!/bin/sh
IFS=$'\n'
# lijst met groepnummers maken
for i in `/usr/sbin/mijndb.sh "select distinct groepnummer from tabel;"`
do
# bereken per groep het gemiddelde
gemid=`/usr/sbin/mijndb.sh "select round(avg(totaaltelling)) from tabel where groepnummer='$i';"`
# zet gemiddelde terug in de entries van DIE groep.
/usr/sbin/mijndb.sh "update tabel set gemiddelde='$gemid' where groepnummer='$i';"
done
Kan een van de heren tweakers mij helpen? Ik zit al uren te googlen/fora te lezen, maar het is niet mijn vakgebied ;-(
Dit moet toch binnen SQL op te lossen zijn met een update/join met een of andere recursieve sub-select o.i.d. ??
Thanks
O2.