Avatar billede Mik2000 Professor
01. oktober 2020 - 10:52 Der er 3 kommentarer og
3 løsninger

Hent sum

Håber en kan hjælpe med noget SQL

Jeg har en tabel (her forenklet)

Salg
---------
id
totalpris
totalprisMedRabat

I totalpris ligger der altid et beløb
I totalprisMedRabat ligger der et beløb med en rabat hvis der er rabat

Eksempel på data
id: 1
totalpris: 200.00
totalprisMedRabat NULL

id: 2
totalpris: 500.00
totalprisMedRabat 400.00

id: 3
totalpris: 1000.00
totalprisMedRabat 600.00

id: 4
totalpris: 300.00
totalprisMedRabat NULL

Jeg vil nu gerne hente en sum ud som er det der er solgt for
Dvs. jeg skal have summen af totalpris, men de steder hvor totalprisMedRabat ikke er NULL skal den i stedet bruge den

Hvad skal jeg skrive
SELECT SUM() as total FROM Salg

total skulle i eksemplet gerne ende med at blive:
200 + 400 + 600 +300 = 1500 kr

Håber der er en der er god til SQL som kan hjælpe

----------------------------------------------------------------------------

Derudover vil jeg også gerne have hvor meget discount der er givet hvis man kan det (men ovenstående er det vigtigste).
Dvs. de steder hvor totalprisMedRabat er udfyldt skal man minus med totalpris og tage summen

Hvis man kan det skulle resultat gerne ende med
500 - 400 = 100
1000 - 600 = 400
Sum: 100 + 400 = 500
Avatar billede michael_stim Ekspert
01. oktober 2020 - 11:09 #1
Jeg havde nok lavet de udregninger i PHP, hvis det nu er PHP du bruger.
Avatar billede Mik2000 Professor
01. oktober 2020 - 11:26 #2
Det er bare ikke helt nemt fordi det er en sum af mange rækker :)

Så jeg kan få følgende på de 2 tal
Total: 2000
TotalMedRabat: 1000

Men af dem kan jeg ikke udlede de 1500 eller de 500

I ovenstående er der 4 rækker men der kan jo være mange flere - så en løsning hvor man f.eks. henter 2000 rækker ud og looper gennem dem, og plusser dem er ikke en holdbar løsning
Avatar billede Rune1983 Ekspert
01. oktober 2020 - 11:56 #3
Ikke testet. Men kan du ikke anvende noget ala.

SELECT
SUM(IFNULL(totalprisMedRabat,totalpris)) AS 'total '
FROM Salg
Avatar billede arne_v Ekspert
01. oktober 2020 - 15:14 #4
SELECT SUM(totalpris) AS listepristotal,SUM(COALESCE(totalprismedrabat,totalpris)) AS faktisktotal
FROM salg

i SQL og beregne rabat i applikation ved at traekke de to tal fra hinanden.
Avatar billede arne_v Ekspert
01. oktober 2020 - 15:16 #5
IFNULL virker ligesom COALESCE i MySQL for 2 argumenter, saa mit forslag er stort set det samme som #3.
Avatar billede Mik2000 Professor
01. oktober 2020 - 19:58 #6
Super det virker - mange 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