Avatar billede Mik2000 Professor
17. maj 2018 - 10:31 Der er 6 kommentarer og
1 løsning

SQL group by

Hej

Jeg har en ordrerline tabel hvor der bl.a. er nedenstående felter
id    produktId      produktSubId      Navn          Antal      Pris.......
1      12                NULL                  Navn 1      5            10
2      14                1                        Navn 2      2            15
3      14                2                        Navn 3      3            20
4      12                NULL                  Navn 1      4            10
5      13                1                        Navn 4      6            30
6      14                2                        Navn 3      1            20

Jeg henter pt hvor den benytter SUM(Antal*Pris) og SUM(Antal) og benytter GROUP BY på produktId

Men det betyder at dem der har et andet produktSubId bliver talt med

Jeg vil gerne hente så jeg fik følgende resultat
Navn      Sum(Antal*Pris)      SUM(Antal)
Navn 1    90                            9
Navn 2    30                            2
Navn 3    80                            4
Navn 4    180                          6

Kan du hjælpe med en SQL der kan lave det?
Avatar billede erikjacobsen Ekspert
17. maj 2018 - 13:11 #1
Jeg forstår ikke hvad du mener med "at dem der har et andet produktSubId bliver talt med"?

Lige nu laver du en almindelig group by med et par summer, der ser ud til at passe med de anførte tal.
Avatar billede Slettet bruger
17. maj 2018 - 13:24 #2
så ku du jo prøve med SELECT xxxxxx WHERE ProductSubID=1 ? og 2
Avatar billede arne_v Ekspert
17. maj 2018 - 19:55 #3
GROUP BY navn

??
Avatar billede Mik2000 Professor
17. maj 2018 - 23:08 #4
Jeg har måske ikke beskrevet det godt nok

Jeg bruger nu GROUP BY productid - men så lægger den id 2, 3 og 6 sammen fordi den har samme produktid

Arne: Ja det kunne virke. Men navnet gemmes i ordrelinjetabellen når køb foretages så der altid står det rigtige. Men navnet på produktet kan ændres. Så hvis man f.eks. ændre navnet på produktet til "Navn 2 (Nyt)" så vil den tælle dem som 2 forskellige selvom de har samme produktid og subid
Avatar billede erikjacobsen Ekspert
17. maj 2018 - 23:43 #5
Det var så en bedre forklaring, men som jeg ser det har du ikke oplysninger nok.

Id 14 og subid 1    har 2 navne: navn2 og navn4, så vi kan ikke bruge id og subid

Og du har lige sagt at vi ikke kan bruge navnet
Avatar billede erikjacobsen Ekspert
17. maj 2018 - 23:45 #6
Eller også er det mig, der læser din tabel forkert ...

Kan du gøre det med    GROUP BY produktId,produktSubId
?
Avatar billede Zochko Juniormester
01. juni 2018 - 21:47 #7
Hej Mik2000 :)

Jeg skulle lige bruge et øjeblik på at forstå dig, men tror det du ønsker er en dobbelt group by:

select navn, Sum(antal*pris), Sum(antal) from tabel group by produktId,navn order by navn;

altså "group by produktId,navn" så starter den med produktId og navn efterfølgende.

Resultatet af sql ovenfor er du du har efter spurgt:
Navn      Sum(Antal*Pris)      SUM(Antal)
Navn 1    90                            9
Navn 2    30                            2
Navn 3    80                            4
Navn 4    180                          6
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

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