Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

SQL sum() voor producten.

Pagina: 1
Acties:

Vraag


  • ewoutw
  • Registratie: oktober 2013
  • Laatst online: 15-11 13:41
Goedendag,

Ik heb een tabel waar in ik bij hou hoe vaak ik een item verkoop. Nu wil ik graag tellen hoevaak elk product gekocht is (eigenlijk zelfs in een bepaalde periode, maar dat is het probleem niet.). Maar nu lukt met me niet om met SQL voor elk product
een totaal te krijgen.

SQL:
1
2
3
SELECT sum(number) FROM transactions // geeft alleen het totale aantal verkochte producten
SELECT sum(number) FROM transactions WHERE productID = 'x' // geeft alleen het totale aantal verkochte van product X.
SELECT DISTINCT sum(number) FROM `transactions // // geeft alleen het totale aantal verkochte producten


Nu kan ik prima een PHP lus doorlopen met alle producten, maar liever heb ik SQL oplossing.
Hoe kan ik er voor zorgen dat van elk productID de numbers opgeteld worden. Zodat ik een lijstje krijg hoe vaak een product verkocht is in totaal.


Voorbeeld tabel:
Waarbij de ID velden een gocombineerde PK vormen.
number hoevaak een product binnen deze trasactie verkocht is.
Prijs en timestamp spreken denk ik voor zich.

code:
1
2
3
+--------------+-----------+--------+-------+----------+
| transactieID | productID | number | price | timstamp |
+--------------+-----------+--------+-------+----------+



The interface is gebouwd in PHP/HTML/CSS en de database die ik gebruik is MarinaDB 5

Beste antwoord (via ewoutw op 01-12-2018 23:14)


  • orf
  • Registratie: augustus 2005
  • Laatst online: 00:53
Met een GROUP BY kan je dit doen. Dat wordt zoiets:


SQL:
1
2
SELECT sum(number), productID FROM transactions
GROUP BY productID

Alle reacties


  • nescafe
  • Registratie: januari 2001
  • Laatst online: 22:33
Dus je wilt het overzicht "groeperen" op productID?

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Acties:
  • Beste antwoord
  • +1Henk 'm!

  • orf
  • Registratie: augustus 2005
  • Laatst online: 00:53
Met een GROUP BY kan je dit doen. Dat wordt zoiets:


SQL:
1
2
SELECT sum(number), productID FROM transactions
GROUP BY productID


  • noMSforme
  • Registratie: oktober 2000
  • Laatst online: 11-11 11:29

code:
1
2
3
select ProductID, count(*) as Aantal
from tabel
group by ProductID


  • ewoutw
  • Registratie: oktober 2013
  • Laatst online: 15-11 13:41
Super, GROUP BY uis een nieuwe functie voor mij.
Heb natuurlijk ook even onze vriend Google gebruikt. Super handige functie om te kennen.

Bedankt

  • Chabierabie
  • Registratie: januari 2019
  • Laatst online: 12-01 15:25
Hi there,

Hopelijk kan iemand mij helpen.
Ik zit met de volgende uitdaging.

Ik heb een tabel met een aantal velden. De tabel heet taken en hierin staat per dag en per medewerker de taken die de medewerker heeft uitgevoerd. Een medewerker kan dus per dag een aantal taken uitvoeren.
Met een aantal velden maak ik een berekening.
De velden zijn aantal_kwartier, vergoeding en totaal. Dit laat dus per taak zien wat het totaal aan vergoeding is.

Totaal bevat de uitkomst van de vermenigvuldiging van aantal_kwartier*vergoeding.

Ik wil nu in een rapport de totaalvergoeding van alle taken per dag per medewerker tonen.
Ik heb dit geprobeerd met group by maar kom er niet uit.

Voorbeeld:
Datum. Medew. Kwart. Vergoed Totaal
17-11-2018. Test1. 3. € 5,00. €15,00
18-11-2018. Test1. 2. € 5,00. €10,00
18-11-2018. Test1. 6. € 5,00. €30,00
18-11-2018. Test2. 1. € 7,50. € 7,50
18-11-2018. Test2. 2. € 7,50. €15,00

Als ik in een query dus de datum 18-11-2018 ingeef moet voor medewerker Test1 het totaal dus €40,00 en voor Test2 €22,50 als resultaat geven.

Wie kan mij op weg helpen?

Alvast bedankt

Groet,
René

  • ShitHappens
  • Registratie: juli 2008
  • Laatst online: 01:46
Wat is je query op dit moment dan? Dit zou zo simpel moeten zijn als

SQL:
1
2
3
4
5
6
7
SELECT
    datum,
    medewerker,
    SUM(kwartier * vergoed) AS totaal
FROM taken
WHERE datum = '2018-11-18' (of hoe jouw DBMS dit moge doen, verschilt per database)
GROUP BY datum, medewerker



(verder nog even kleine aandachtspuntjes:
- 'totaal' niet opslaan in de database, deze kan altijd berekend worden
- ligt je vergoeding per medewerker vast? Haal deze dan naar een andere tabel, zodat je die vergoeding maar 1x op hoeft te slaan. Bij een sporadisch wijzigende vergoeding kun je daar dan nog een van-datum en tot-datum toevoegen)

  • ewoutw
  • Registratie: oktober 2013
  • Laatst online: 15-11 13:41
Hi Rene,

Wat heb je al geprobeerd? en waar loop je dan precies tegen aan? Het is makelijker je input te verbeteren dan out of the blue ineen een goed antwoord neer te zetten.
Maar ik de bovenstaande zal wel aardig de goede kant op zijn
Pagina: 1


Apple iPhone 11 Nintendo Switch Lite LG OLED C9 Google Pixel 4 FIFA 20 Samsung Galaxy S10 Sony PlayStation 5 Elektrische auto

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True