Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[SQL] Afronden naar vaste waarde

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goedemorgen,

Van een leverancier krijg ik een XML bestand met hierin o.a. mijn netto inkoopprijs per artikel. Dit XML bestand importeer ik in WooCommerce om een shop te vullen.

Is er een manier om met SQL af te ronden naar een vaste waarde voor de laatste twee decimalen?

Wat ik eerst doe is een update van de prijs doorvoeren door hier mijn marge op te zetten (d.m.v. een vermenigvuldiging). Vervolgens krijg ik allemaal 'lelijke' prijzen (bijv. €10,32) hiervan zou ik dan graag €10,95 maken.

Kan iemand mij hier mee helpen?

[ Voor 6% gewijzigd door Verwijderd op 14-12-2013 11:23 . Reden: toevoeging ]


  • spone
  • Registratie: Mei 2002
  • Niet online
Welk smaakje SQL gaat het over?

i5-14600K | 32GB DDR5-6000 | RTX 5070 - MacBook Pro M1 Pro 14" 16/512


Verwijderd

Topicstarter
Sorry, MySQL.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je nou eens gewoon in Engels schrijft wat je vraagt: Round(waarde, 0) + 0.95 ofzo :? Wat heb je zelf al bedacht/geprobeerd/gezocht/gevonden? En, inderdaad, om welk RDBMS gaat het hier?
Hier al eens gekeken? Round, Ceil, Floor, ... afhankelijk van hoe je 't precies wil doen allemaal bruikbaar.

[ Voor 61% gewijzigd door RobIII op 14-12-2013 11:26 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Pinobigbird
  • Registratie: Januari 2002
  • Laatst online: 11:29

Pinobigbird

doesn't share food!

SQL:
1
SELECT CEILING(10.32) - 0.05

Geeft 10.95

Joey: Nice try. See the Netherlands is this make believe place where Peter Pan and Tinkerbell come from.
https://kattenoppasleiderdorp.nl
PV: 3080Wp ZO + 3465Wp NW = 6545Wp totaal 13°tilt


Verwijderd

Topicstarter
RobIII schreef op zaterdag 14 december 2013 @ 11:23:
Round(waarde, 0) + 0.95 ofzo :? Wat heb je zelf al bedacht/geprobeerd/gezocht/gevonden? En, inderdaad, om welk RDBMS gaat het hier?
Ik heb al meerdere malen gezocht op diverse sites en zoekmachines, maar afronden wordt veelal uitgelegd, maar net niet wat ik zoek... Diverse dingen zelf geprobeerd met ROUND en FLOOR, maar steeds niet het gewenste resultaat.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zaterdag 14 december 2013 @ 11:26:
[...]

Ik heb al meerdere malen gezocht op diverse sites en zoekmachines, maar afronden wordt veelal uitgelegd, maar net niet wat ik zoek... Diverse dingen zelf geprobeerd met ROUND en FLOOR, maar steeds niet het gewenste resultaat.
Het is dan handig als je even aangeeft waarom dat niet is wat je zoekt en hoe dat gewenste resultaat dan volgens jou bereikt moet worden. Ik zie al 2 mogelijke oplossingen staan in dit topic die allebei 10.95 opleveren; waarom is dat niet wat je zoekt dan?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Dit is wel wat ik zoek en ik ben jullie dankbaar voor de antwoorden. Het is niet dat ik zomaar even een vraag neergooi in het forum omdat ik zelf geen moeite wil doen. Ik kwam er gewoon echt niet uit en dan kan je je er helemaal suf op staren of het gewoon vragen toch?

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 30-10 12:53

Douweegbertje

Wat kinderachtig.. godverdomme

Verwijderd schreef op zaterdag 14 december 2013 @ 11:30:
Dit is wel wat ik zoek en ik ben jullie dankbaar voor de antwoorden. Het is niet dat ik zomaar even een vraag neergooi in het forum omdat ik zelf geen moeite wil doen. Ik kwam er gewoon echt niet uit en dan kan je je er helemaal suf op staren of het gewoon vragen toch?
Jawel, alleen vaak komen hier topics met mensen die 'het gewoon even vragen'. Elke keer is dat zeer makkelijk inderdaad voor de vraagsteller maar vervolgens mogen wij met nat vingerwerk even gaan gokken wat je wilt, wat je bedoeld en wat je al hebt geprobeerd met welke data..
Alleen al een simpele copy/paste van je geprobeerde queries met voorbeeld data zou al zoveel hebben gescheeld.

Bedoeling is ook vaak om niet alles helemaal voor te kauwen maar ook om je wat te leren. Nu krijg je het antwoord en dan zal je dat wel zo overgenomen hebben. Snap je echter de syntax nu e.d.?

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 11:23

Salandur

Software Engineer

als je puur wilt afronden op veelvouden van 5 cent moet je een kleine berekening doen: round(price * 20) / 20
je kan natuurlijk ook ceil of floor gebruiken als je altijd het veelvoud wilt dat hoger of lager is.

Assumptions are the mother of all fuck ups | iRacing Profiel


  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 13:02

The Eagle

I wear my sunglasses at night

Niet te moeilijk doen, het gaat om je eigen marges dus jij bepaalt. Afronden op hele getallen en dan 5 cent er af trekken is een stuk makkelijker lijkt me.

Typisch geval geneuzel in de marge als je het mij vraagt :P

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


Verwijderd

Topicstarter
Dit is het uiteindelijk geworden:

SQL:
1
2
3
UPDATE wp_postmeta
SET meta_value = ROUND(meta_value*1.5, 0) + 0.95
WHERE meta_key = '_price'


Mensen die WooCommerce gebruiken; doe je voordeel ermee!

Verder iedereen bedankt voor de bijdragen.

  • Pinobigbird
  • Registratie: Januari 2002
  • Laatst online: 11:29

Pinobigbird

doesn't share food!

Weet je zeker dat je ROUND wilt gebruiken? Bij meta_value = 1 wordt de uitkomst namelijk 2.95 en niet 1.95 zoals je misschien zou willen. Ik verwacht dat je met FLOOR (of CEILING) beter uitkomt.

Joey: Nice try. See the Netherlands is this make believe place where Peter Pan and Tinkerbell come from.
https://kattenoppasleiderdorp.nl
PV: 3080Wp ZO + 3465Wp NW = 6545Wp totaal 13°tilt


  • DJMaze
  • Registratie: Juni 2002
  • Niet online
1 = 2.95 is inderdaad bijna een marge van 3 i.p.v. 1.5
Bij hogere bedragen (10 = 15.95) is de marge weer netjes 1.59
Met FLOOR los je dat inderdaad op.
Echter, als je "gratis verzenden" hebt, dan is 2.95 niet zo verkeerd.

Maak je niet druk, dat doet de compressor maar


Verwijderd

Topicstarter
Jullie hebben helemaal gelijk FLOOR of CEIL is veel netter:

Dan wordt het dit:

SQL:
1
2
3
UPDATE wp_postmeta
SET meta_value = CEIL(meta_value*1.5) - 0.05
WHERE meta_key = '_price'

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Nog veel netter is om dit niet in je datalaag te doen maar in je business laag, waar het hoort.

https://niels.nu

Pagina: 1