Обсуждение: simple limit of decimals
hi all, I update a column based on a division over two real values. It causes a huge number of decimals that I wanna to limit. UPDATE point_pol SET taxa_record = ((SELECT ((CASE WHEN numtax>0 THEN numtax/numreg ELSE 1 END))) where userid='hello' taxa_record values are real and with real I cannot limit the decimals. I tried to apply a round in the sql sentence but complains that round must be applied to a single value each time. how can I solve it? maybe using numeric? (but I have read numeric reduces performance...) thanks! Pere -- View this message in context: http://www.nabble.com/simple-limit-of-decimals-tp21455215p21455215.html Sent from the PostgreSQL - general mailing list archive at Nabble.com.
In response to pere roca : > > hi all, > > I update a column based on a division over two real values. It causes a huge > number of decimals that I wanna to limit. > > UPDATE point_pol SET taxa_record = ((SELECT ((CASE WHEN numtax>0 THEN > numtax/numreg ELSE 1 END))) where userid='hello' > > taxa_record values are real and with real I cannot limit the decimals. > I tried to apply a round in the sql sentence but complains that round must > be applied to a single value each time. Tray: UPDATE point_pol SET taxa_record = round(((SELECT ((CASE WHEN numtax>0 THEN numtax/numreg ELSE 1 END))),2) ... to round to 2 decimal places. Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net
On Wed, Jan 14, 2009 at 5:43 AM, pere roca <peroc79@gmail.com> wrote: > > hi all, > > I update a column based on a division over two real values. It causes a huge > number of decimals that I wanna to limit. > > UPDATE point_pol SET taxa_record = ((SELECT ((CASE WHEN numtax>0 THEN > numtax/numreg ELSE 1 END))) where userid='hello' > > taxa_record values are real and with real I cannot limit the decimals. > I tried to apply a round in the sql sentence but complains that round must > be applied to a single value each time. Are you doing accounting with reals? not a good idea due to rounding issues, far better to use numeric(x,y) which will, incidentally, limit your number of decimal places for you.
dear Andreas, thanks for the answer; yes, round should be the first, but it gives an error: Function round(real, integer) does not exists following this mail (http://archives.postgresql.org/pgsql-bugs/2003-01/msg00074.php) I created a new function and now works! best regards, Pere Andreas Kretschmer-4 wrote: > > In response to pere roca : >> >> hi all, >> >> I update a column based on a division over two real values. It causes a >> huge >> number of decimals that I wanna to limit. >> >> UPDATE point_pol SET taxa_record = ((SELECT ((CASE WHEN numtax>0 THEN >> numtax/numreg ELSE 1 END))) where userid='hello' >> >> taxa_record values are real and with real I cannot limit the decimals. >> I tried to apply a round in the sql sentence but complains that round >> must >> be applied to a single value each time. > > Tray: > > UPDATE point_pol SET taxa_record = round(((SELECT ((CASE WHEN numtax>0 > THEN numtax/numreg ELSE 1 END))),2) ... > > > to round to 2 decimal places. > > > Andreas > -- > Andreas Kretschmer > Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) > GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net > > -- > Sent via pgsql-general mailing list (pgsql-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general > > -- View this message in context: http://www.nabble.com/simple-limit-of-decimals-tp21455215p21455726.html Sent from the PostgreSQL - general mailing list archive at Nabble.com.
In response to pere roca : > > dear Andreas, > > thanks for the answer; yes, round should be the first, but it gives an > error: Function round(real, integer) does not exists UPDATE point_pol SET taxa_record = round(((SELECT ((CASE WHEN numtax>0 THEN numtax/numreg ELSE 1 END)))::numeric,2) ... sorry, my fault, i forgot the CAST. Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net
2009/1/14 A. Kretschmer <andreas.kretschmer@schollglas.com>: > In response to pere roca : >> >> dear Andreas, >> >> thanks for the answer; yes, round should be the first, but it gives an >> error: Function round(real, integer) does not exists > > UPDATE point_pol SET taxa_record = round(((SELECT ((CASE WHEN numtax>0 > THEN numtax/numreg ELSE 1 END)))::numeric,2) ... > An example of triki round: postgres=# select round((9.88888::real)::numeric,2); round ------- 9.89 (1 row) postgres=# > sorry, my fault, i forgot the CAST. > > > Andreas > -- > Andreas Kretschmer > Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) > GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net > > -- > Sent via pgsql-general mailing list (pgsql-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general > -- Emanuel Calvo Franco ArPUG / AOSUG Member Postgresql Support & Admin