कास्टिंग के लिए पुराने सिंटैक्स को भी आज़माएं,
SELECT ROUND(AVG(some_column)::numeric,2)
FROM table;
PostgreSQL के किसी भी संस्करण के साथ काम करता है।
भार के की कमी कर रहे हैं कुछ PostgreSQL कार्यों में, क्यों (???): मुझे लगता है कि "यह कमी है", लेकिन @CraigRinger, @Catcall और PostgreSQL टीम के बारे में "स्नातकोत्तर के ऐतिहासिक औचित्य" इस बात से सहमत (!)।
पुनश्च: गोलाई के बारे में एक और बिंदु सटीकता है , @ IanKenney का उत्तर जांचें ।
कास्टिंग रणनीति के रूप में ओवरलोडिंग
आप के साथ ROUND फ़ंक्शन को अधिभारित कर सकते हैं ,
CREATE FUNCTION ROUND(float,int) RETURNS NUMERIC AS $$
SELECT ROUND($1::numeric,$2);
$$ language SQL IMMUTABLE;
अब आपका निर्देश ठीक काम करेगा, कोशिश करें (फ़ंक्शन निर्माण के बाद)
SELECT round(1/3.,4); -- 0.3333 numeric
लेकिन यह एक NUMERIC प्रकार लौटाता है ... पहले कमोम-उपयोग अधिभार को संरक्षित करने के लिए, हम एक FLOAT प्रकार वापस कर सकते हैं जब एक पाठ पैरामीटर की पेशकश की जाती है,
CREATE FUNCTION ROUND(float, text, int DEFAULT 0)
RETURNS FLOAT AS $$
SELECT CASE WHEN $2='dec'
THEN ROUND($1::numeric,$3)::float
-- ... WHEN $2='hex' THEN ... WHEN $2='bin' THEN... complete!
ELSE 'NaN'::float -- like an error message
END;
$$ language SQL IMMUTABLE;
प्रयत्न
SELECT round(1/3.,'dec',4); -- 0.3333 float!
SELECT round(2.8+1/3.,'dec',1); -- 3.1 float!
SELECT round(2.8+1/3.,'dec'::text); -- need to cast string? pg bug
पुनश्च: \df round
ओवरलोडिंग के बाद जाँच , कुछ ऐसा दिखाएगा,
स्कीमा | नाम | परिणाम प्रकार | तर्क डेटा प्रकार
------------ + ------- + ------------------ + ---------- ------------------
myschema | गोल | दोहरी सटीकता | डबल सटीक, पाठ, int
myschema | गोल | सांख्यिक | डबल सटीक, int
pg_catalog | गोल | दोहरी सटीकता | दोहरी सुनिश्चितता
pg_catalog | गोल | सांख्यिक | संख्यात्मक
pg_catalog | गोल | सांख्यिक | संख्यात्मक, int
pg_catalog
कार्यों डिफ़ॉल्ट होते हैं, को देखने के निर्माण में गणित कार्यों का मार्गदर्शन ।