sql >> Databasteknik >  >> RDS >> Database

Hur man multiplicerar två kolumner i SQL

Problem:

vill multiplicera värden från två kolumner i en tabell.

Exempel:

Vår databas har en tabell som heter purchase med data i följande kolumner:id , name , price , quantity och discount_id .

id namn pris kvantitet rabatt_id
1 penna 7 3 1
2 anteckningsbok 5 8 2
3 gummi 11 3 1
4 pennfodral 24 2 3

Låt oss multiplicera priset med antalet produkter för att ta reda på hur mycket du betalade för varje vara i din beställning.

Lösning:

SELECT name,
 price*quantity  AS total_price
FROM purchase;

Den här frågan returnerar poster med produktens namn och dess totala pris:

namn total_price
penna 21
anteckningsbok 40
gummi 33
pennfodral 48

Diskussion:

Behöver du välja namnet på varje post (i vårt fall name ) och beräkna resultatet av att multiplicera en numerisk kolumn med en annan (price och quantity )? Allt du behöver göra är att använda multiplikationsoperatorn (*) mellan de två multiplikatkolumnerna (price * quantity ) i en enkel SELECT fråga. Du kan ge detta resultat ett alias med AS nyckelord; i vårt exempel gav vi multiplikationskolumnen ett alias för total_price .

Observera att du även kan använda data från två kolumner som kommer från olika tabeller. Vi har en annan tabell i vår databas som heter discount som har kolumner med namnet id och value; den senare representerar den procentuella rabatten på varan med angivet ID.

id värde
1 10
2 20
3 30

Titta på exemplet nedan.

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;

Här är resultatet:

namn total_price
penna 18.90
anteckningsbok 32.00
gummi 29.70
pennfodral 33.60

Som du kan se är det ganska enkelt att multiplicera värden från olika sammanfogade tabeller. I vårt exempel ovan multiplicerade vi priset för varje produkt med dess kvantitet från en tabell (purchase ) och multiplicerade sedan detta totala pris med den procentuella rabatten med discount bord.


  1. Hur flexibla/begränsande är SQLite-kolumntyper?

  2. SQL Group By med en Order By

  3. MMO-spel och databasdesign

  4. MySQL JOIN med LIMIT 1 på sammanfogat bord