[MySQL] vermenigvuldigen aggregatie functie

Pagina: 1
Acties:
  • 220 views sinds 30-01-2008
  • Reageer

  • MrQcue
  • Registratie: Januari 2005
  • Laatst online: 03-04 19:42
Ik probeer al even een tijdje een query op te bouwen die gegroepeerd een totaal berekend van de vermenigvuldigen van de resultaten. Ik weet het, het klinkt onduidelijk maar ik bedoel dus gewoon de vermenigvuldigings variant van een SUM() functie in een query.

Ik heb al even gezocht maar volgens mij bestaat daar geen ingebouwde functie in MySQL voor. Ik heb wel de onderstaande link gevonden maar de oplossing die daarin genoemd wordt geeft bij mij een fout in de query aan.


http://archives.neohapsis...s/mysql/2004-q2/3296.html


Ten eerste mist er een ronde haak voor zover ik heb kunnen zien (Ik tel 4 openingshaken en maar 3 om te sluiten) maar dan nog werkt dit niet. Ik heb echter te weinig wiskundig inzicht om dit op te kunnen lossen.

Owja, ik zou dit ook in php in een loop kunnen maken maar omdat het resultaat terug moet in de database en ik niet weet hoe groot de database kan worden. Daarnaast wil ik de execution-time van het script binnen enkele secondes te beperken. Zodoende probeer ik het in zo min mogelijk loops van php te doen :)

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 11:49
AVG() * COUNT() zou het moeten doen denk ik zo...
Oh nee, dan heb je natuurlijk de som...

[ Voor 33% gewijzigd door T-MOB op 08-03-2006 00:31 ]

Regeren is vooruitschuiven


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

Het gemiddelde maal het aantal records levert alsnog de som van deze records op. ;) Stel je kijkt naar 3 records die in het betreffende veld de waarden 15, 25 en 200 hebben. AVG(15, 25, 200) == 80, en 80 * 3 == 240, wat precies overeenkomt met SUM(15, 25, 200) en niet is wat de topicstarter wil. ;)

edit:
Of anders edit je even voordat ik post. :P

[ Voor 9% gewijzigd door NMe op 08-03-2006 00:32 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 11:49
Overigens werkt de oplossing die je zelf gevonden had in de link hier wel met MySQL 4.1.15
SQL:
1
2
3
4
5
SELECT EXP(
SUM( LOG( COALESCE( `test` , 1 ) ) )
)
FROM `num`
GROUP BY `group`

Regeren is vooruitschuiven


  • Digihelp ®
  • Registratie: Maart 2001
  • Laatst online: 06-04 10:07
Op 4.0.16 ook, en die GROUP BY is niet eens nodig. Bij 10, 10, en 20 krijg ik netjes 2000.00 als resultaat.

[ Voor 7% gewijzigd door Digihelp ® op 08-03-2006 00:57 ]


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Wat is dat nu eigenlijk met het escapen mbv backticks in MySQL :?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

kenneth schreef op woensdag 08 maart 2006 @ 01:17:
Wat is dat nu eigenlijk met het escapen mbv backticks in MySQL :?
offtopic:
Zonder backticks kun je geen keywords, speciale karakters, operators of spaties gebruiken in tabelnamen, met wel. Velen vinden het netter staan om het consequent te gebruiken, zodat je niet voor fouten komt te staan als je een tabel 'user' noemt. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MrQcue
  • Registratie: Januari 2005
  • Laatst online: 03-04 19:42
Eeuuhh, wat zal ik zeggen; :X

Misschien is dit topic handig voor iemand anders die met dit probleem zit. Ik heb nl. een typfoutje gemaakt. 8)7

Het werkt dus WEL!!, Solly. Bedankt voor jullie reacties. Ik weet nu tenminste dat het ook onder de 4.0 branch werkt wat ook wel belangrijk is.

PS. Ik draai hier op MySQL 5.0.18
Pagina: 1