[英]How to format an aggregate function result in SQL select query of Oracle Database?
我在 Oracle 數據庫中獲取表 Student 的兩個不同列,在第三個我應用 AVG 函數格式化最多三個小數位,如果它是一個整數,那么它應該有三個尾隨零。
我嘗試使用 RPAD 和 TRUNC 功能,但它不起作用。
FYR 模式
學生
ID Number,
NAME Varchar,
Marks Number
SQL查詢
Select NAME, TRUNC(AVG(Marks), 3) FROM STUDENT;
您可以使用 Oracle Datavase 的 TO_CHAR 函數。 您可以利用格式模型功能來幫助您處理小數點前后長度不同的數字。 您可以在此處探索 Format Model 功能。
查詢可以修改如下:
SELECT NAME,
TO_CHAR(AVG(MARKS), 'FM9,9999999.990')
FROM STUDENT
GROUP BY NAME;
您缺少GROUP BY
,可以使用TO_CHAR
來格式化要顯示的小數位數。
Select NAME, TO_CHAR((AVG(Marks), '999999.000') FROM STUDENT GROUP BY NAME;
試試下面的查詢
WITH STUDENT as(
SELECT 1 AS ID, 'SAN' AS NAME, 60.57987 AS MARKS FROM DUAL UNION ALL
SELECT 2, 'MAN' , 40.79878 FROM DUAL UNION ALL
SELECT 3, 'SAN' , 20.865467 FROM DUAL UNION ALL
SELECT 4, 'MAN' , 10.28778 FROM DUAL UNION ALL
SELECT 5, 'TES' , 20.284 FROM DUAL UNION ALL
SELECT 6, 'TES' , 40 FROM DUAL UNION ALL
SELECT 7, 'GAL' , 40 FROM DUAL UNION ALL
SELECT 8, 'GAL' , 40 FROM DUAL
)
Select NAME,TO_CHAR(ROUND(AVG(MARKS),3),'99999999.000')MARKS
FROM STUDENT GROUP BY NAME;
如果您想要三位小數,請使用ROUND()
:
SELECT NAME, ROUND(AVG(Marks), 3)
FROM STUDENT;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.