Ik heb als voorbeeld de volgende database:
CREATE TABLE IF NOT EXISTS `voorbeeld` (
`waarde` decimal(10,2) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `voorbeeld` (`waarde`) VALUES
('2.02'),
('-9.00');
De tabel voorbeeld ziet er dus nu zo uit:
| waarde |
--------------
| 2.02 |
| -9.00 |
--------------
Nu wil ik van alle waarden het gemiddelde aftrekken.
Dus: gemiddelde = (2.02 + -9.00)/2=-3.49
De eerste waarde moet dus 2.02--3.49=5.51 worden
En de tweede waarde: -9.00--3.49 = -5.51
Hoe kan ik dit met MySQL uitrekenen?
Wat ik zelf al geprobeerd heb is:
SELECT waarde - AVG(waarde) FROM voorbeeld
Maar dit werkt niet omdat na toepassing van AVG nog maar één rij geretourneerd wordt.
Wie kan mij hier bij helpen?
Ik weet wel omwegen om dit te bereiken, bijvoorbeeld eerst met een query het gemiddelde uitrekenen, opslaan in een @var en vervolgens nog een query waarbij je rekent met @var. Maar dit is alles behalve efficiënt als ik een het gemiddelde wil gebruiken van meerdere gedjoinde tabellen.
Ik hoor graag jullie oplossingen!
- MySQL: Iedere rij vermenigvuldigen met het gemiddelde van de kolom
-
11-12-2010, 08:05 #1
- Berichten
- 658
- Lid sinds
- 18 Jaar
MySQL: Iedere rij vermenigvuldigen met het gemiddelde van de kolom
-
In de schijnwerper
SEO-tekstschrijver inhuren | beter vindbaar met webtekstenFreelance / WerkTe Koop Lastminute website met potentie en inkomsten.Website te koop[SNELLE LEVERING] Laat je website / webshop snel en professioneel bouwen!Freelance / WerkSpraakcomputers.nl - Premium domeinnaam - Medisch / communicatiemiddelenDomein te koop -
11-12-2010, 09:17 #2
- Berichten
- 33
- Lid sinds
- 16 Jaar
Re: MySQL: Iedere rij vermenigvuldigen met het gemiddelde van de kolom
Je zou het met een subquery kunnen oplossen.
SELECT waarde as orgineel, waarde - (select avg(waarde) from voorbeeld) FROM voorbeeld
-
11-12-2010, 09:26 #3
- Berichten
- 658
- Lid sinds
- 18 Jaar
Re: MySQL: Iedere rij vermenigvuldigen met het gemiddelde van de kolom
Maar punt is dus dat waarde het resultaat is van veel joins. In jouw methode moet ik die dan allemaal 2x uitvoeren. Of bedoel je het anders?
-
11-12-2010, 10:42 #4
- Berichten
- 33
- Lid sinds
- 16 Jaar
Re: MySQL: Iedere rij vermenigvuldigen met het gemiddelde van de kolom
Met een subquery wel. Het probleem is dat een groepfunctie altijd maar 1 waarde returned (of je moet group by gebruiken maar daar heb je in dit geval ook niet veel aan?)
-
11-12-2010, 11:04 #5
- Berichten
- 658
- Lid sinds
- 18 Jaar
Re: MySQL: Iedere rij vermenigvuldigen met het gemiddelde van de kolom
Group By is inderdaad niet voor dit doeleinde te gebruiken, ik gebruik het wel om alles van één gebruiker samen te voegen maar dat doet er nu niet toe.
Probleem is inderdaad dat bij gebruik van SUM nog maar één waarde geretourneerd wordt. Is er niet een mogelijkheid om de select van de data op te slaan in een variabel en vervolgens in de volgende query het gemiddelde op te slaan uit die variabel en in een andere variabel te stoppen en tot slot in een laatste query beide variabels gebruiken? Dan hoef ik maar één keer uit de database te halen.
Iemand een idee hoe ik dat kan uitwerken?
-
11-12-2010, 11:10 #6
- Berichten
- 33
- Lid sinds
- 16 Jaar
Re: MySQL: Iedere rij vermenigvuldigen met het gemiddelde van de kolom
Dan kun je denk ik net zo goed de 2 queries uitvoeren en dan bv. php het eind "nummer" laten uitrekenen?
-
11-12-2010, 11:13 #7
- Berichten
- 658
- Lid sinds
- 18 Jaar
Re: MySQL: Iedere rij vermenigvuldigen met het gemiddelde van de kolom
Aanvullend bericht:
Ik heb de (of in ieder geval een oplossing met het gewenste resultaat) gevonden:
SET @rij:= 0, @som := 0;
SELECT sub.waarde-@som/@rij as genormaliseerd
FROM(
SELECT @rij:=@rij+1 as aantal, @som:=@som+waarde, waarde
FROM voorbeeld
) as subLaatst aangepast door Lodewijk d.V. : 11-12-2010 om 11:26 Reden: Automatisch samengevoegd.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic