簡體   English   中英

如何在 Oracle 數據庫的 SQL 選擇查詢中格式化聚合函數結果?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM