sql >> Database teknologi >  >> RDS >> Database

Sådan multipliceres to kolonner i SQL

Problem:

ønsker at gange værdier fra to kolonner i en tabel.

Eksempel:

Vores database har en tabel med navnet purchase med data i følgende kolonner:id , name , price , quantity , og discount_id .

id navn pris mængde rabat_id
1 pen 7 3 1
2 notesbog 5 8 2
3 gummi 11 3 1
4 penalhus 24 2 3

Lad os gange prisen med mængden af ​​produkterne for at finde ud af, hvor meget du har betalt for hver vare i din ordre.

Løsning:

SELECT name,
 price*quantity  AS total_price
FROM purchase;

Denne forespørgsel returnerer poster med navnet på produktet og dets samlede pris:

navn total_price
pen 21
notesbog 40
gummi 33
penalhus 48

Diskussion:

Skal du vælge navnet på hver post (i vores tilfælde name ) og beregne resultatet af at gange en numerisk kolonne med en anden (price og quantity )? Alt du skal gøre er at bruge multiplikationsoperatoren (*) mellem de to multiplikand-kolonner (price * quantity ) i en simpel SELECT forespørgsel. Du kan give dette resultat et alias med AS søgeord; i vores eksempel gav vi multiplikationskolonnen et alias for total_price .

Bemærk, at du også kan bruge data fra to kolonner, der kommer fra forskellige tabeller. Vi har en anden tabel i vores database ved navn discount der har kolonner med navnet id og value; sidstnævnte repræsenterer den procentvise rabat på varen med det angivne ID.

id værdi
1 10
2 20
3 30

Se på eksemplet nedenfor.

Løsning:

SELECT p.name, 
 p.price*p.quantity*(100-d.value)/100  AS total_price
FROM purchase p
JOIN discount d ON d.id=p.discount_id;

Her er resultatet:

navn total_price
pen 18.90
notesbog 32.00
gummi 29.70
penalhus 33.60

Som du kan se, er det ret nemt at multiplicere værdier fra forskellige sammenføjede tabeller. I vores eksempel ovenfor multiplicerede vi prisen på hvert produkt med dets mængde fra én tabel (purchase ) og gange derefter denne samlede pris med procentrabatten ved hjælp af discount tabel.


  1. Sådan fungerer Atan2d() i PostgreSQL

  2. Hvordan håndterer man fejl for duplikerede poster?

  3. Hvordan forbindes i java som SYS til Oracle?

  4. Hvordan indsætter man flere poster og får identitetsværdien?