本文目录
- sql 四舍五入问题
- 查询每个部门总工资,和每个部门的平均工资的sql语句
- 如何平均四舍五入到PostgreSQL的2位小数
- sql server 2005数据库中如何对从数据库中查出的数据结果进行四舍五入
- sql语句怎么写“四舍五入后求和”的语句
- SQL查询平均数
- SQL如何四舍五入
- sql server 2008 整数相除四舍五入
- SQL Server 2000 数据怎么自动四舍五入了
sql 四舍五入问题
Round函数(四舍六入五成双)(转)2007-06-09 15:20Round(所在单元:Math) 功能说明:对一个实数进行四舍五入。(按照银行家算法) 参考实例: var I, j: Integer; begin i := Round(1.5); // i等于2 j := Round(2.5); // j等于2 //注意Round(2.53)=3 end;在Delphi中使用Round函数得到的答案有时与我们所预期的会不太一样:采用的是四舍六入五留双。即当舍或入位大于或小于五时按四舍五入来处理,而当舍或入位等于五时,就要看前面一位是什么,根据奇进偶不进,它总是返回一个偶数值。 示例 结果i:= Round(11.5) 12i:= Round(10.5) 10 这种Round其实是按照银行家算法,统计学上一般都用这种算法,比传统的"四舍五入"要科学。如果要使用传统的"四舍五入"方法,可以使用下面算法://提供者FlashDance(10040231) 15:15:58var D1,D2:Double;begin D1:=3.14159; D2:=StrToFloat(Format(’%.5f’,));end;
查询每个部门总工资,和每个部门的平均工资的sql语句
以oracle中默认scott用户下的dept表和emp表为例:
两个表数据分别如下:
dept表:
emp表:
求每个部门总工资sql语句如下:
select b.dname,sum(nvl(a.sal,0)) sal from emp a,dept b where a.deptno(+)=b.deptno group by b.dname;
结果如图:
求每个部门平均工资的sql语句如下:
select b.dname,round(avg(nvl(a.sal,2)),0) sal from emp a,dept b where a.deptno(+)=b.deptno group by b.dname;
结果如图:
部分函数说明:
sum为求和函数,将要求和的列sum(列名)
avg为求平均值函数,将要求平均值的列avg(列名)
nvl为如果未空则置空值为其他数据的函数,nvl(为空的列,将空值置成的其他值)
round为四舍五入函数,round(列名,保留小数位数)
如何平均四舍五入到PostgreSQL的2位小数
ostgreSQL没有定义round(double precision, integer)。至于原因, 嘘声解释了一轮,需要一个精确的版本仅适用于numeric。regress=》 SELECT round( float8 ’3.1415927’, 2 );ERROR: function round(double precision, integer) does not existregress=》 \df *round* List of functions Schema | Name | Result data type | Argument data types | Type ------------+--------+------------------+---------------------+-------- pg_catalog | dround | double precision | double precision | normal pg_catalog | round | double precision | double precision | normal pg_catalog | round | numeric | numeric | normal pg_catalog | round | numeric | numeric, integer | normal(4 rows)regress=》 SELECT round( CAST(float8 ’3.1415927’ as numeric), 2); round ------- 3.14(1 row)(在上面的,请注意float8仅仅是一个速记别名double precision。你可以看到,PostgreSQL的正在扩大它在输出)。 你必须转换值被舍入到numeric两种表单的round。只是追加::numeric对于速记投,像round(val::numeric,2)。 如果你格式化显示给穿上’round。使用to_char(参见:本手册中的数据类型格式化函数),它可以让你指定格式,并给你一个text这是不会受到任何的怪事你的客户端端语言的结果可能跟numeric值。例如:regress=》 SELECT to_char(float8 ’3.1415927’, ’FM999999999.00’); to_char --------------- 3.14(1 row)to_char将数字四舍五入为你作为格式化的一部分。该FM前缀告诉to_char你不想与前导空格任何填充。
sql server 2005数据库中如何对从数据库中查出的数据结果进行四舍五入
用ROUND函数就好了﹐比如 ﹕SELECT ROUND(列) FROM 表ROUND返回数字表达式并四舍五入为指定的长度或精度。语法ROUND ( numeric_expression , length )参数numeric_expression精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。length是 numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。function是要执行的操作类型。function 必须是 tinyint、smallint 或 int。如果省略 function 或 function 的值为 0(默认),numeric_expression 将四舍五入。当指定 0 以外的值时,将截断 numeric_expression。
sql语句怎么写“四舍五入后求和”的语句
把数据类型转换为decimal,系统会自动四舍五入,字段合计求和可以用sum函数,例如以下例子假设合并字段col,只保留一位小数:select sum(cast(col as decimal(19,1)))from 表
SQL查询平均数
select avg(年龄) from student
如果四舍五入的话:
select round(avg(年龄),2) from student
2就代表小数后2位,看你自己需求,如果不保留小数,逗号和2都去掉
SQL如何四舍五入
update item set sale_price = price 理解为卖价最终会等于进价了。如果是要把卖价等于进价四舍五入,则update item set sale_price = cast(round(price,1) as numeric(15,1))如果不满足您的需求,请继续追问,在线解答。
sql server 2008 整数相除四舍五入
sql server 2008 整数相除需要除数或被除数有一个数据类型为小数,才可以四舍五入。
首先看一个例子,如图:
两条语句唯一区别就是 10 与 10.00
1、select cast(round(10/6,0) as int) 结果:1
2、select cast(round(10.00/6,0) as int) 结果:2
但结果确不一样。
原因是SQLserver有默认的数据类型转换。
10/6 默认转换为整型 即:10/6 = 1。那么 round(1) = 1
10.00/6 默认转换为小数即:10.00/6 = 1.666666 ,那么 round(1.666666,0) = 2
SQL Server 2000 数据怎么自动四舍五入了
i与J的数据类型不同,计算结果可能会导致数据不准的从 int、smallint、tinyint、float、real、money 或 smallmoney 向 decimal 或 numeric 转换会导致溢出。默认情况下,在将数字转换为较低精度和小数位数的 decimal 或 numeric 值时,SQL Server 使用舍入法。然而,如果 SET ARITHABORT 选项为 ON,当发生溢出时,SQL Server 会出现错误。若仅损失精度和小数位数,则不会产生错误。