Avatar billede lsskaarup Nybegynder
14. september 2010 - 14:43 Der er 5 kommentarer og
1 løsning

Beregning direkte i query

Jeg har en tabel, som bl.a. indeholder 2 felter, der beskriver hhv. en vægt samt procentsats, der siger hvor meget af vægten der er produceret.

Jeg skal lave et total udtræk, og kunne i den forbindelse godt tænke mig, hvis det hele kunne løses direkte i queryen, så jeg ikke skulle beregne efterfølgende i front-end'en (man vil jo gerne spring over hvor gærdet er lavest...)

Jeg skal for hver record have beregnet følgende vægt*procent, der så skal summeres, for til sidst at blive blive divideret med den samlede vægt.

Altså en formel lignede
record1                23% af vægt
record2            + 100% af vægt
record3            +  10% af vægt
.
.
.
                    --------------- (divideret)
                      SUM(vægt) 

Men kan det lade sig gøre, og i så fald hvordan?
Helt perfekt ville det være, hvis det kunne kombineres med andre almindelige SUM-udtræk i samme query.
Avatar billede arne_v Ekspert
14. september 2010 - 15:08 #1
Jeg tror altsaa at du er ved at bestige Mount Everest for at undgaa at skulle hoppe over haekken.

Det lyder helt oplagt at lave disse beregninger i app.
Avatar billede The Real Yoda Juniormester
14. september 2010 - 15:13 #2
tjae.. med mindre man måske skulle sortere på dem ..

Men det er simpelt at lave vægt*procent udregningen da det bare er en sum

sum(vaegt*(procent/100) as vaegtprocent
Avatar billede lsskaarup Nybegynder
14. september 2010 - 16:31 #3
tjae.. med mindre man måske skulle sortere på dem ..

Men det er simpelt at lave vægt*procent udregningen da det bare er en sum

sum(vaegt*(procent/100) as vaegtprocent


Det ligner faktisk løsningen jeg var efter. Hvis jeg rettere den lidt til og smider den ind i min sum-query, så får jeg i hvert fald et resultat der ligner det forventede meget godt.

Eks.:
SELECT SUM(eVægt) AS vægt, SUM(eStålpris) AS stålpris, sum(eRealVægt*eStade)/SUM(eRealVægt) as vaegtprocent, (SUM(eRealVægt)/SUM(eStålpris)) AS enhedspris, SUM(eForvTimer) AS ForvTimer, SUM(eRealTimer) AS RealTimer, SUM(eOverført) AS overført, SUM(eRealVægt) AS realvægt FROM etape    WHERE ordre_id = '5172' AND e27 = 'DS' GROUP BY ordre_id

Den skal jeg lige have testet noget mere...
Avatar billede lsskaarup Nybegynder
05. oktober 2010 - 13:07 #4
Har nu haft det i test et stykke tid, og det ser ud til at virke.
therealyoda -> smide et svar.
Avatar billede The Real Yoda Juniormester
05. oktober 2010 - 14:53 #5
jamen så er der da et svar her :) ... dejligt det virkede
Avatar billede lsskaarup Nybegynder
05. oktober 2010 - 15:25 #6
Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester