2016-05-04 2 views
0

ich eine Tabelle, die wie folgt aussieht:Postgres rundet automatisch die Nummer auf dem Einsatz

CREATE TABLE word(
    id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), 
    word TEXT NOT NULL, 
    count INT NOT NULL, 
    ratio NUMERIC(10, 3) NOT NULL, 
    percent_of_total NUMERIC(10, 3) NOT NULL, 
    daily_count_id UUID REFERENCES daily_count(id) 
); 

ich dann versucht, mit dieser Aussage einzufügen:

INSERT INTO word (word, count, ratio, percent_of_total, daily_count_id) 
    VALUES ('test', 5, 5/214, 5*100/214, 
      (SELECT id from daily_count WHERE day_of_count = CURRENT_DATE+1)); 

Es funktioniert. Er fügt den Wert, wenn es aus der Tabelle dann die numerischen Werte wie folgt abgerundet wurde die Auswahl:

67035a35-e5df-495b-95d5-cb3b4041c7b4 test 5 0.000 2.000 91858e7a-3440-4959-9074-9d197d6c97fc 

Die Werte 2.000 und 0.000 gerundet sind, aber ich brauche sie der genaue Wert zu sein.

Ich benutze die DataGrip IDE, aber ich glaube nicht, dass es etwas damit zu tun hat.

+2

Versuchen 5.0/214, Gleitkomma-Division zu tun. – jarlh

+0

Das funktioniert dank. Wenn Sie eine Antwort erstellen, schließe ich diese. – McBoman

Antwort

2

5/214 wird als Integer-Division ausgeführt. I.e. Das Ergebnis wird Integer sein.

Wenn Sie Gleitkomma Division wollen, können Sie einfach 5.0/214 tun.

(Oder verwenden cast, z cast(5 as NUMERIC(10, 3))/214.)

Verwandte Themen