Oracle 百分比
日前遇到一个问题,需要对在Oracle数据库中查询出来的数值进行比率的计算。类似于如下的SQL:
Select Round((discount/Amount),2) from dual;
这样算出来的数字可以满足绝大部分的需求。但是对于不到1的数字,问题出来了......显示的类似于 .45样子的数据。0.45前面的0不见了。
以下总结了两种方法来解决缺0的问题。
第一种解决方案:
SELECT DECODE (TRUNC (1/100),0, REPLACE (1/100, ''.'', ''0.''),TO_CHAR (1/100))
from DUAL;
大家只要在1/100的地方替换成自己需要的百分数就可以了。
第二种解决方案:
SELECT RTrim(To_Char(1/100,''FM99999999990.9999''),''.'') from dual;
替换方式同上。
两种方式的比较:
第一种公式比较复杂,但可以处理通用的数值。
第二种看起来简单,不过格式化的值的位数一定要大于计算的位数才行。比如 SELECT RTrim(To_Char(200,''FM90.9999'') ,''.'') from dual; 显示的就是########,因为超过格式化的范围了。
不过一般来说我还是倾向于使用第二种,毕竟放宽一点就可以了^_^。
不知道谁还知道有更加好或者规范的写法?
文章出处:DIY部落(http://www.diybl.com/course/7_databases/oracle/oraclejs/2008224/100982.html)
SELECT RTrim(To_Char((1/3)*100,'FM99999999990.9999'),'.')||'%' from dual; 这样获得的是33.3333%
SELECT substr(RTrim(To_Char((1/3)*100,'FM99999999990.9999'),'.'),1,2) ||'%' from dual; 这样可以省略小数,得33%
SELECT RTrim(To_Char((round((1/3),2))*100,'FM99999999990.9999'),'.')||'%' from dual;与以上是同样效果,得33%.
其中把1/3换成你要的 我的是:单个选项的票数/总票数即可
当然单个选项的票数,总票数 也得你用你的SQL语句算出来就OK了.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wpplvhq/archive/2008/09/21/2956993.aspx
相关文档:
1.
概念不同:
连接是指物理的客
户端到oracle服务端的连接。一般是通过一个网络的连接。
在已建立的连接
上,建立客户端与oracle
的会话,以后客
户端与oracle
的交互都在一个会话环境中
进行。
2.
关系是多对多:[同意网友的意见,应该是1对
多。一个会话要么 ......
Oracle启动过程介绍及命令,还有关闭。
写在前面:启动数据库前,请先启动监程序。
lsnrctl start
启动的三个步骤,依次为1.创建并启动实例、2.装载数据库、3.打开数据库。
可以通过命令startup来实现。
startup 命令格式
startup [ nomount | mount | open | force ] [ restrict ] [ pfile=filename ];
方法1 -- st ......
Oracle层次查询和分析函数在号段选取中的应用
摘要
一组连续的数,去掉中间一些数,如何求出剩下的数的区间(即号段)?知道号段的起止,如何求出该号段内所有的数?知道一个大的号段范围和已经取过的号段,如何求出可用的号段?利用Oracle提供的强大的查询功能以及分析函数,我们可以很轻松的解决上述问题。
关键词:
......
1、连接Oracle数据库
启动SQL*Plus,要求输入User Name、Password、Host String这三个参数,例如我在安装的时候默认创建的数据库为orcl,也就是SID,密码也为orcl,对应上面的三个参数如下所示:
User Name:orcl
Password:orcl
Host String:orcl as sysdba
就可以登录成功。
或者也可以使用默认的scott来登录:
......
http://inthirties.com:90/thread-1233-1-1.html
好没有碰Solaris了,手有些生了,看来真要装个solaris,平时多玩玩。
在solaris上装Oracle 10g先。
1. 检查安装依赖包
官方要求的包
SUNWarc
SUNWbtool
SUNWhea
SUNWlibm
SUNWlibms
SUNWsprot
SUNWtoo
SUNWi1of
SUNWi1cs
SUNWi15cs
SUNWxwfnt
执行命令
# p ......