Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-1。将差值四舍五入到小数点后2位_Sql_Oracle_Decimal_Rounding - Fatal编程技术网

SQL-1。将差值四舍五入到小数点后2位

SQL-1。将差值四舍五入到小数点后2位,sql,oracle,decimal,rounding,Sql,Oracle,Decimal,Rounding,我试图创建一个SQL语句,在选择属性列表中使用一个子查询来显示产品id、当前价格以及当前价格与总体平均价格之间的差异 我知道使用ROUND函数会将差值四舍五入到零位小数,但我想将差值四舍五入到2位小数 SELECT p_code, p_price, ROUND(p_price - (SELECT AVG(p_price) FROM product)) AS "Difference" FROM product; 我尝试使用CAST,但它仍然提供相同的输出 SELECT p_code, p_pr

我试图创建一个SQL语句,在选择属性列表中使用一个子查询来显示产品id、当前价格以及当前价格与总体平均价格之间的差异

我知道使用ROUND函数会将差值四舍五入到零位小数,但我想将差值四舍五入到2位小数

SELECT p_code, p_price, ROUND(p_price - (SELECT AVG(p_price) FROM product)) AS "Difference" 
FROM product;
我尝试使用CAST,但它仍然提供相同的输出

SELECT p_code, p_price, CAST(ROUND(p_price - (SELECT AVG(p_price) FROM Lab6_Product)) as numeric(10,2)) AS "Difference" 
FROM lab6_product;
提前感谢您的时间和帮助

round接受第二个参数:

SELECT p_code, p_price,
       ROUND(p_price - AVG(p_price) OVER (), 2) AS "Difference"
FROM product;
注意,我还将子查询更改为窗口函数

我经常建议转换为数字或十进制/数字:

这将确保同时显示两个小数点。

舍入采用第二个参数:

SELECT p_code, p_price,
       ROUND(p_price - AVG(p_price) OVER (), 2) AS "Difference"
FROM product;
注意,我还将子查询更改为窗口函数

我经常建议转换为数字或十进制/数字:


这可以确保同时显示两个小数点。

您是否尝试过ROUNDp_price-从Lab6_Product中选择AVGp_price,2?您问题中的新手错误:我正在尝试创建SQL语句,到目前为止还可以!对于子查询,新手的错误是将您尝试的解决方案作为需求的一部分。要求以任何格式显示代码、价格和与平均值的差异;问题语句不包括如何使用子查询或以任何其他方式执行。在本例中,最佳答案不是使用子查询,而是使用AVG的分析版本,如Gordon的答案所示。这样,您只需对输入行进行一次检查。在子查询中,您阅读了两次表。您是否尝试过ROUNDp_price-从Lab6_产品中选择AVGp_price,2?您的问题中的新手错误:我正在尝试创建SQL语句,到目前为止还可以!对于子查询,新手的错误是将您尝试的解决方案作为需求的一部分。要求以任何格式显示代码、价格和与平均值的差异;问题语句不包括如何使用子查询或以任何其他方式执行。在本例中,最佳答案不是使用子查询,而是使用AVG的分析版本,如Gordon的答案所示。这样,您只需对输入行进行一次检查。使用一个子查询,您可以读取表两次。+1用于使用AVG的分析版本-这是正确的方法。请注意,虽然演员阵容不影响任何东西的显示;从双稳态显示10和非10中选择cast10作为数字10,2。或者10.00不确定显示两个小数点是什么意思。@mathguy。我认为大多数显示结果的工具都会遵循列的类型。我不能对每一种工具都说,但很多工具都说。我不知道大多数工具,但我敢猜测,至少有70%的Oracle从业人员使用SQL*Plus、Toad或SQL Developer。所有三个都将10.00显示为10-无论您是从tbl中选择col且col是数据类型编号10,2,还是从dual中选择cast10作为编号6,2。所以,我想说答案是否定的。也不清楚为什么格式化在这个问题上很重要;OP询问四舍五入问题,因此9.37没有四舍五入到9。我不知道如果OP关心9点到9点之间,原始问题中没有任何建议。@mathguy。通常,当有人想要一个四舍五入的值时,他们不希望看到9.370000.+1用于使用AVG的分析版本-这是正确的方法。请注意,虽然演员阵容不影响任何东西的显示;从双稳态显示10和非10中选择cast10作为数字10,2。或者10.00不确定显示两个小数点是什么意思。@mathguy。我认为大多数显示结果的工具都会遵循列的类型。我不能对每一种工具都说,但很多工具都说。我不知道大多数工具,但我敢猜测,至少有70%的Oracle从业人员使用SQL*Plus、Toad或SQL Developer。所有三个都将10.00显示为10-无论您是从tbl中选择col且col是数据类型编号10,2,还是从dual中选择cast10作为编号6,2。所以,我想说答案是否定的。也不清楚为什么格式化在这个问题上很重要;OP询问四舍五入问题,因此9.37没有四舍五入到9。我不知道如果OP关心9点到9点之间,原始问题中没有任何建议。@mathguy。通常,当有人想要一个四舍五入的值时,他们不希望看到9.370000。