gemiddelde leeftijd berekenen

Pagina: 1
Acties:
  • 2.118 views

Acties:
  • 0 Henk 'm!

Anoniem: 416228

Topicstarter
Ik zit hier met een probleem.

ik zit in phpmyadmin te werken en probeer hier de query gemiddelde leeftijd uit te voeren, dat lukt ook wel, alleen de resultaat klopt niet denk ik.
normaal zou je op deze manier ongeveer de gemiddelde leeftijd kunnen berekenen: 30+34+27+31+25+34+27= 208
208/ 7 = 29,71428571428571 gemiddelde leeftijd

de volgende query heb ik op internet gevonden en als ik hem uitvoer dan geeft ie als resultaat 5.714285714285714

select avg (LeefTijd)
from kind

Maar als ik dezelfde query gebruik om bijvoorbeeld, de gemiddelde prijs te berekenen dan klopt het wel!!

Wat gaat hier fout? en welke query kan ik gebruiken om de gemiddelde leeftijd te kunnen berekenen?

alvast bedankt!!!

Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 13-07 10:20

CAPSLOCK2000

zie teletekst pagina 888

Zit je wel naar de juiste tabel te kijken? 29.7 is niet echt een kinderleeftijd, 5.7 wel

This post is warranted for the full amount you paid me for it.


Acties:
  • 0 Henk 'm!

  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 23:34
Het valt op dat de DB getal precies 24 lager is dan je eigen berekening. Om dat te bereiken moet je totaal 40 zijn. Dus kijk naar je getallen hoe je daar op uit zou kunnen komen. (denk aan een negatief getal ertussenin)

[ Voor 50% gewijzigd door OnTracK op 17-10-2012 17:55 ]

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


Acties:
  • 0 Henk 'm!

Anoniem: 416228

Topicstarter
CAPSLOCK2000 schreef op woensdag 17 oktober 2012 @ 17:53:
Zit je wel naar de juiste tabel te kijken? 29.7 is niet echt een kinderleeftijd, 5.7 wel
Jawel ik heb alleen de leeftijden wat ouder gegeven voor ze.

Acties:
  • 0 Henk 'm!

  • Bolletje
  • Registratie: Juni 2008
  • Laatst online: 13-07 20:44

Bolletje

Moderator Harde Waren
Hoe is je database opgebouwd?

En heb je zeker de juiste waardes ingevuld zoals ze in je voorbeeld staan?

Want zoals gezegd zit er dus precies 24 verschil in.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Ik gok ook op een foute invoer in de tabel die je over het hoofd ziet. Doe eens een SUM() ipv AVG() en kijk wat daaruit komt en controleer of dat klopt met je eigen optelling.

offtopic:
een tabel 'kind' klinkt wat raar, noem het gewoon persoon..veel duidelijker?

Acties:
  • 0 Henk 'm!

Anoniem: 416228

Topicstarter
Cartman! schreef op woensdag 17 oktober 2012 @ 18:01:
Ik gok ook op een foute invoer in de tabel die je over het hoofd ziet. Doe eens een SUM() ipv AVG() en kijk wat daaruit komt en controleer of dat klopt met je eigen optelling.

offtopic:
een tabel 'kind' klinkt wat raar, noem het gewoon persoon..veel duidelijker?
als ik sum doe dan geeft ie 40 aan
als ik het kind wijzig ben ik bang dat de structuur van de rest niet meer gaat kloppen.

[ Voor 9% gewijzigd door Anoniem: 416228 op 17-10-2012 18:05 ]


Acties:
  • 0 Henk 'm!

  • Bolletje
  • Registratie: Juni 2008
  • Laatst online: 13-07 20:44

Bolletje

Moderator Harde Waren
Anoniem: 416228 schreef op woensdag 17 oktober 2012 @ 18:04:
[...]


als ik sum doe dan geeft ie 40 aan
Ja, en 40/7 is je gemiddelde die je eruit krijgt.

Je hebt de database gewoon verkeerd gevuld :)

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 07:14
Anoniem: 416228 schreef op woensdag 17 oktober 2012 @ 18:04:
[...]


als ik sum doe dan geeft ie 40 aan
Niet per ongeluk negatieve getallen erin of getallen die je per ongeluk met een spatie start ofzo?

Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 09:18

DukeBox

Voor je 't weet wist je 't nie

Is je tabel numeric/int ? Zit je niet text op te tellen en ergens een raar karakter ?

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

Anoniem: 416228

Topicstarter
hier is de foto, voor de leeftijden heb ik kieskeurig gedaan.
http://imageshack.us/photo/my-images/849/naamlooshn.jpg/

[ Voor 23% gewijzigd door Anoniem: 416228 op 17-10-2012 18:10 ]


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 07:14
En je voert je sum toch wel op alle waarden in leefTijd (dafuq, hoofdletter t?) uit?

Acties:
  • 0 Henk 'm!

Anoniem: 416228

Topicstarter
DukeBox schreef op woensdag 17 oktober 2012 @ 18:07:
Is je tabel numeric/int ? Zit je niet text op te tellen en ergens een raar karakter ?
Nee hij is ENUM
'25','26','27','28','29','30','31','32','33','34'

[ Voor 10% gewijzigd door Anoniem: 416228 op 17-10-2012 18:14 ]


Acties:
  • 0 Henk 'm!

  • Aloys
  • Registratie: Juni 2005
  • Niet online
Wat voor type is de kolom leeftijd?

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 07:14
Waarom niet gewoon int?

Acties:
  • 0 Henk 'm!

Anoniem: 416228

Topicstarter
Dan kan ik geen keuze menu maken toch! het is de bedoeling dat ik een leeftijd kan kiezen.

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 07:14
Anoniem: 416228 schreef op woensdag 17 oktober 2012 @ 18:15:
[...]

Dan kan ik geen keuze menu maken toch! het is de bedoeling dat ik een leeftijd kan kiezen.
Ehhh. Jawel? Welke programmeertaal wil je dat menu in maken dan?

Acties:
  • 0 Henk 'm!

  • Bolletje
  • Registratie: Juni 2008
  • Laatst online: 13-07 20:44

Bolletje

Moderator Harde Waren
Als aanvulling nog hier op: ik zou niet de geboortedatum van de moeder in dezelfde tabel geven als de persoon (kind?). In plaats daarvan geef je aan wie de moeder is (ga met unieke ID's werken, niet met namen) en kan je met een join makkelijk de moeder opzoeken die bij elke persoon hoort en dus ook de geboortedatum van die moeder.

Acties:
  • 0 Henk 'm!

  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 06:34

Kettrick

Rantmeister!

Anoniem: 416228 schreef op woensdag 17 oktober 2012 @ 18:15:
[...]

Dan kan ik geen keuze menu maken toch! het is de bedoeling dat ik een leeftijd kan kiezen.
Je kan eenvoudig een keuze lijst maken in je applicatie, hoe dit verder in phpMyAdmin werkt zou ik me niet al te druk om maken.

Je bent nu met ENUM waarden aan het rekenen, iets dat voor zover ik weet niet door MySQL wordt ondersteunt. Vervang je leeftijden eens door A,B,C,D etc, wat voor avg verwacht je dan ? :)

Gewoon een int van maken, probleem opgelost!

Acties:
  • 0 Henk 'm!

Anoniem: 416228

Topicstarter
Merethil schreef op woensdag 17 oktober 2012 @ 18:16:
[...]


Ehhh. Jawel? Welke programmeertaal wil je dat menu in maken dan?
zo heb ik het gedaan
http://imageshack.us/photo/my-images/87/1111qt.jpg/

Acties:
  • 0 Henk 'm!

  • Bolletje
  • Registratie: Juni 2008
  • Laatst online: 13-07 20:44

Bolletje

Moderator Harde Waren
Maar je laat je gebruikers toch niet via phpMyAdmin data invoeren?

Of wat is de bedoeling precies?

Acties:
  • 0 Henk 'm!

Anoniem: 416228

Topicstarter
Bolletje schreef op woensdag 17 oktober 2012 @ 18:19:
[...]

Maar je laat je gebruikers toch niet via phpMyAdmin data invoeren?

Of wat is de bedoeling precies?
ik heb geen gebruikers, ik ben zelf de gebruiker, ik ben aan het oefenen met mysql tot ik dit probleem tegen kwam.

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 07:14
Als dit een schoolopdracht is zou ik eerst nog eens even in de boeken duiken als ik jou was

Ik snap sowieso niet waarom je een dropdownmenu nodig denkt te hebben, handmatig invoeren is sneller/even snel....

[ Voor 39% gewijzigd door Merethil op 17-10-2012 18:26 ]


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Anoniem: 416228 schreef op woensdag 17 oktober 2012 @ 18:21:
[...]


ik heb geen gebruikers, ik ben zelf de gebruiker, ik ben aan het oefenen met mysql tot ik dit probleem tegen kwam.
Ga voor jezelf na: wát "is" een "enum"? Is dat het doel wat ik voor ogen had? Wil ik er nog meer mee? Functioneert het dan nog voldoende? Et cetera..

Leesvoer: Chapter 11. Data Types

[ Voor 11% gewijzigd door Osiris op 17-10-2012 18:22 ]


Acties:
  • 0 Henk 'm!

  • Bolletje
  • Registratie: Juni 2008
  • Laatst online: 13-07 20:44

Bolletje

Moderator Harde Waren
Anoniem: 416228 schreef op woensdag 17 oktober 2012 @ 18:21:
[...]


ik heb geen gebruikers, ik ben zelf de gebruiker, ik ben aan het oefenen met mysql tot ik dit probleem tegen kwam.
Waarom ben je dan met phpMyAdmin bezig? Waardes kan je toch gewoon met code invoeren?

ENUM is in jouw geval helemaal niet relevant. Je kan gewoon met een integer werken.

Acties:
  • 0 Henk 'm!

  • Koozza
  • Registratie: November 2007
  • Laatst online: 11-07 06:45

Koozza

Wâ voor drop? GAS D’ROP!

Is het niet dat ENUM gewoon 0 1 2 3 4 5 6 7 8 is waar 0 je eerste enum waarde is, 1 je 2e etc? Na ff snel te kijken zou dat rond de 40 uitkomen / 7 geeft 5.714

Of is het nu heel stom wat ik zeg :+ (Voor de rest: Inderdaad gewoon een int gebruiken :))

[ Voor 11% gewijzigd door Koozza op 17-10-2012 18:26 ]


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
ThijsD schreef op woensdag 17 oktober 2012 @ 18:26:
Is het niet dat ENUM gewoon 0 1 2 3 4 5 6 7 8 is waar 0 je eerste enum waarde is, 1 je 2e etc? Na ff snel te kijken zou dat rond de 40 uitkomen / 7 geeft 5.714

Of is het nu heel stom wat ik zeg :+ (Voor de rest: Inderdaad gewoon een int gebruiken :))
Nee, klopt precies wat je zegt, was mijn theorie ook al :) (36/7 om precies te zijn.)

Verder vind ik het ook ontzettend geniaal om de leeftijd in een DB te zetten.. Mag 'ie elke keer dat 'ie een record opvraagt uit gaan rekenen of de leeftijd nog wel actueel is en niet dat de persoon stiekem alweer jarig is geweest _O-

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 07:14
Osiris schreef op woensdag 17 oktober 2012 @ 18:27:
[...]

Nee, klopt precies wat je zegt, was mijn theorie ook al :) (36/7 om precies te zijn.)

Verder vind ik het ook ontzettend geniaal om de leeftijd in een DB te zetten.. Mag 'ie elke keer dat 'ie een record opvraagt uit gaan rekenen of de leeftijd nog wel actueel is en niet dat de persoon stiekem alweer jarig is geweest _O-
Ik heb het gevoel dat TS dat zelf steeds handmatig zal doen....

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Is me alleen nog niet duidelijk wat de TS nou bedoelt met "keuzemenu".. 't Is nou niet te hopen dat hij dat ENUM-selectie-vakje bedoelt in PHPMyAdmin. Immers, wat als er een leeftijd ingevuld moet worden die niet in het ENUM-rijtje staat? Dan moet je de ENUM weer aanpassen et cetera. En dat terwijl een leeg INT invulvakje volstaat...

[ Voor 65% gewijzigd door Osiris op 17-10-2012 18:32 ]


Acties:
  • 0 Henk 'm!

  • Bolletje
  • Registratie: Juni 2008
  • Laatst online: 13-07 20:44

Bolletje

Moderator Harde Waren
Osiris schreef op woensdag 17 oktober 2012 @ 18:31:
Is me alleen nog niet duidelijk wat de TS nou bedoelt met "keuzemenu"..
Hij heeft in phpMyAdmin een dropdown...

Acties:
  • 0 Henk 'm!

Anoniem: 416228

Topicstarter
Osiris schreef op woensdag 17 oktober 2012 @ 18:22:
[...]

Ga voor jezelf na: wát "is" een "enum"? Is dat het doel wat ik voor ogen had? Wil ik er nog meer mee? Functioneert het dan nog voldoende? Et cetera..

Leesvoer: Chapter 11. Data Types
hier wordt ook aangegeven dat ik mag ENUM als cijfers gebruiken.
http://dev.mysql.com/doc/refman/4.1/en/enum.html

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 13-07 21:17

Rmg

Anoniem: 416228 schreef op woensdag 17 oktober 2012 @ 18:36:
[...]


hier wordt ook aangegeven dat ik mag ENUM als cijfers gebruiken.
http://dev.mysql.com/doc/refman/4.1/en/enum.html
Ja dat mag ook prima, maar waarom zou je enums gebruiken bij een variabele data set als leeftijd (leeftijd is niet te vatten in 0-100 maar de max hangt af van de oudste persoon op aarde :+).

Gewoon niet handig. INT is daar geschikter voor.

[ Voor 15% gewijzigd door Rmg op 17-10-2012 18:41 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Waar lees je dat dan precies? Ik mag sowieso hopen dat jouw versie MySQL wat nieuwer is dan 4.1 :X

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Anoniem: 416228 schreef op woensdag 17 oktober 2012 @ 18:36:
[...]

hier wordt ook aangegeven dat ik mag ENUM als cijfers gebruiken.
http://dev.mysql.com/doc/refman/4.1/en/enum.html
OK, en nu in een zin die voor Nederlanders te begrijpen is?

En ja, je mag inderdaad nummers/cijfers in een ENUM gebruiken. Maar weet je überhaupt wat en ENUM inhoudt? Wat het is? Waar het voor gebruikt wordt?

Je kunt een ENUM aanmaken met ENUM('appel', 'peer', banaan') en daar vervolgens een kolom aanmaken met de ENUM-waarden 'appel', 'banaan', maar ook met de waarde 1 en 3 (respectievelijk 'appel' en 'banaan').

En als je dan een ENUM-kolom met twee values ('appel' en 'banaan' bijv.) hebt en je doet daar een SUM op, dan krijg je 4 terug. Doe je een AVG, dan krijg je 2. En dat terwijl je er 'appel' en 'banaan' ingestopt hebt! Huh? Hoe kan dat? ;)

Acties:
  • 0 Henk 'm!

  • mace
  • Registratie: Juni 2003
  • Laatst online: 11-07 23:25

mace

Sapere Aude

Kanttekening is dat je LeefTijd hebt, maar leeftijd is één woord dus die hoofdletter-T is onzin.

Acties:
  • 0 Henk 'm!

  • Kazu
  • Registratie: Juni 2004
  • Laatst online: 10-07 19:03
Anoniem: 416228 schreef op woensdag 17 oktober 2012 @ 18:36:
[...]


hier wordt ook aangegeven dat ik mag ENUM als cijfers gebruiken.
http://dev.mysql.com/doc/refman/4.1/en/enum.html
Als je na de laatste bullet point kijkt, dan zie je een tabel waarin wordt uitgelegd dat enumeratie begint te tellen bij 1, en de lege string als 0 wordt gerekend.

Ik verveelde me, en heb dus even jouw volgorde van getallen als 1 t/m 10 gerekend, de rekensom opnieuw uitgerekend, en waar kom je op uit? 40/7 :+

Enums zijn niet geschikt om als integers te gebruiken ;)

PS5 PSN: UnrealKazu


Acties:
  • 0 Henk 'm!

Anoniem: 416228

Topicstarter
Rmg schreef op woensdag 17 oktober 2012 @ 18:40:
[...]


Ja dat mag ook prima, maar waarom zou je enums gebruiken bij een variabele data set als leeftijd. Gewoon niet handig
ok dan ga ik uitzoeken hoe ik INT kan gebruiken in plaats van ENUM. ik heb net INT gebruikt maar kreeg een error syntax.
Admin, mag deze topic open blijven voor het geval dat ik weer niet verder kom ?

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Kazu schreef op woensdag 17 oktober 2012 @ 18:42:
[...]

Enums zijn niet geschikt om als integers te gebruiken ;)
Oh, maar het kán wel!

Als je namelijk je ENUM vult met de waarden 1 t/m 150 (zo oud is tot nu toe nog niemand geworden geloof ik :+) en je begint ook echt bij 1, dan matchen de ENUM-values de ENUM-index!

Dus als je de waarde '1' invoert (string), dan wordt dat de *index* 1! En als je de index 1 invoert (kan ook in MySQL), dan wordt dat de waarde '1' (string)! *O*

En ja, da's achterlijk, I know, pak gewoon een TINYINT.. :P

Acties:
  • 0 Henk 'm!

  • Kazu
  • Registratie: Juni 2004
  • Laatst online: 10-07 19:03
Osiris schreef op woensdag 17 oktober 2012 @ 18:45:
[...]

Oh, maar het kán wel!

Als je namelijk je ENUM vult met de waarden 1 t/m 150 (zo oud is tot nu toe nog niemand geworden geloof ik :+) en je begint ook echt bij 1, dan matchen de ENUM-values de ENUM-index!

Dus als je de waarde '1' invoert (string), dan wordt dat de *index* 1! En als je de index 1 invoert (kan ook in MySQL), dan wordt dat de waarde '1' (string)! *O*

En ja, da's achterlijk, I know, pak gewoon een TINYINT.. :P
Oh, maar dat is zeker helemaal waar :P Kudo's voor je oplossing ;)

PS5 PSN: UnrealKazu


Acties:
  • 0 Henk 'm!

  • Emmeau
  • Registratie: Mei 2003
  • Niet online

Emmeau

All your UNIX are belong to us

Osiris schreef op woensdag 17 oktober 2012 @ 18:45:
[...]
Als je namelijk je ENUM vult met de waarden 1 t/m 150 (zo oud is tot nu toe nog niemand geworden geloof ik :+) en je begint ook echt bij 1, dan matchen de ENUM-values de ENUM-index!
Doe het dan 'netjes'. Creeer een tabel leeftijden waar de leeftijd de PK is, en maak een fk aan.
Heb je je dropdown in phpmyadmin EN het zijn nog ints ook :+

If you choose to criticise you choose your enemies


Acties:
  • 0 Henk 'm!

  • Jegorex
  • Registratie: April 2004
  • Laatst online: 16-06 18:03
Osiris schreef op woensdag 17 oktober 2012 @ 18:45:
[...]

Oh, maar het kán wel!

Als je namelijk je ENUM vult met de waarden 1 t/m 150 (zo oud is tot nu toe nog niemand geworden geloof ik :+) en je begint ook echt bij 1, dan matchen de ENUM-values de ENUM-index!

Dus als je de waarde '1' invoert (string), dan wordt dat de *index* 1! En als je de index 1 invoert (kan ook in MySQL), dan wordt dat de waarde '1' (string)! *O*

En ja, da's achterlijk, I know, pak gewoon een TINYINT.. :P
Alleen jammer dat je dan geen babies kunt toevoegen :+

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Jegorex schreef op woensdag 17 oktober 2012 @ 20:37:
[...]

Alleen jammer dat je dan geen babies kunt toevoegen :+
De string '' (leeg dus) is index 0 ;)

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 13-07 17:45

Creepy

Tactical Espionage Splatterer

Anoniem: 416228 schreef op woensdag 17 oktober 2012 @ 18:42:
[...]


ok dan ga ik uitzoeken hoe ik INT kan gebruiken in plaats van ENUM. ik heb net INT gebruikt maar kreeg een error syntax.
Admin, mag deze topic open blijven voor het geval dat ik weer niet verder kom ?
Normaal gesproken blijven topics die beantwoord zijn gewoon open. Mocht er dan een vervolg vraag komen dan kan dat eventueel in hetzelfde topic. In dit geval zie ik het liever in een nieuw topic. Dan wel aub even letten op Het algemeen beleid #quickstart zodat je net even wat meer informatie geeft dan dat je nu hebt gedaan ;) Je bent er nu wat karig mee en zeg nu zelf, met wat zoek en leeswerk had je dit waarschijnlijk zelf ook wel opgelost.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.