求一个sql语句求百分比句

Oracle 数据库常用Sql语句 - 生亦何欢,死亦何求 - ITeye博客
博客分类:
ORACLE 常用的SQL语法和数据对象
一.数据控制语句 (DML) 部分
(往数据表里插入记录的语句)INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);INSERT INTO 表名(字段名1, 字段名2, ……)
SELECT (字段名1, 字段名2, ……) FROM 另外的表名;字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''.字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒或者用字符串转换成日期型函数TO_DATE(‘’,’YYYY-MM-DD’)TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.年-月-日 小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SSINSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包.INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1
NOCACHE;其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL2.DELETE
(删除数据表里记录的语句)DELETE FROM表名 WHERE 条件;注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间TRUNCATE TABLE 表名;此操作不可回退.truncate table 3.UPDATE
(修改数据表里记录的语句)UPDATE表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 条件;如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;值N超过定义的长度会出错, 最好在插入前进行长度校验..注意事项:A.
以上SQL语句对表都加上了行级锁,
确认完成后, 必须加上事物处理结束的命令 COMMIT 才能正式生效,
否则改变不一定写入数据库里.
如果想撤回这些操作, 可以用命令 ROLLBACK 复原.B.
在运行INSERT, DELETE 和 UPDATE 语句前最好估算一下可能操作的记录范围,
应该把它限定在较小 (一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段.
程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成,
其间加上COMMIT 确认事物处理.
二.数据定义 (DDL) 部分
1.CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)ORACLE常用的字段类型有CHAR
固定长度的字符串VARCHAR2
可变长度的字符串NUMBER(M,N)
数字型M是位数总长度, N是小数的长度DATE
日期类型创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面创建表时可以用中文的字段名, 但最好还是用英文的字段名创建表时可以给字段加上默认值, 例如 DEFAULT SYSDATE这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如 不允许重复 UNIQUE, 关键字 PRIMARY KEY2.ALTER
(改变表, 索引, 视图等)改变表的名称ALTER TABLE 表名1
TO 表名2;在表的后面增加一个字段ALTER TABLE表名 ADD 字段名 字段名描述;修改表里字段的定义描述ALTER TABLE表名 MODIFY字段名 字段名描述;给表里的字段加上约束条件ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (字段名);ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段名);把表放在或取出数据库的内存区ALTER TABLE 表名 CACHE;ALTER TABLE 表名 NOCACHE;3.DROP
(删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)删除表和它所有的约束条件DROP TABLE 表名 CASCADE CONSTRAINTS;4.TRUNCATE (清空表里的所有记录, 保留表的结构)TRUNCATE 表名;
三.查询语句 (SELECT) 部分
SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 条件;字段名可以带入函数
COUNT(*), MIN(字段名),
MAX(字段名),
AVG(字段名), DISTINCT(字段名),
TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')NVL(EXPR1, EXPR2)函数解释:IF EXPR1=NULL
RETURN EXPR2ELSE
RETURN EXPR1DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数解释:IF AA=V1 THEN RETURN R1IF AA=V2 THEN RETURN R2..…
ELSERETURN NULLLPAD(char1,n,char2)函数解释:字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位字段名之间可以进行算术运算例如:
(字段名1*字段名1)/3查询语句可以嵌套例如: SELECT …… FROM(SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;两个查询语句的结果可以做集合操作例如: 并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS,
交集INTERSECT分组查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1[HAVING 条件] ;两个以上表之间的连接查询SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE
表名1.字段名 = 表名2. 字段名 [ AND ……] ;SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE
表名1.字段名 = 表名2. 字段名(+) [ AND ……] ;有(+)号的字段位置自动补空值查询结果集的排序操作, 默认的排序是升序ASC, 降序是DESCSELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]ORDER BY字段名1, 字段名2 DESC;字符串模糊比较的方法INSTR(字段名, ‘字符串’)&0字段名 LIKE
‘字符串%’
[‘%字符串%’]每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.
四.ORACLE里常用的数据对象 (SCHEMA)
1.索引 (INDEX)CREATE INDEX 索引名ON 表名 ( 字段1, [字段2, ……] );ALTER INDEX 索引名 REBUILD;一个表的索引最好不要超过三个 (特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况,也可以建立多字段的组合索引和基于函数的索引ORACLE8.1.7字符串可以索引的最大长度为1578 单字节ORACLE8.0.6字符串可以索引的最大长度为758 单字节2.视图 (VIEW)CREATE VIEW 视图名AS SELECT …. FROM …..;ALTER VIEW视图名 COMPILE;视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.3.同义词 (SYNONMY)CREATE SYNONYM同义词名FOR 表名;CREATE SYNONYM同义词名FOR 表名@数据库链接名;4.数据库链接 (DATABASE LINK)CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘数据库连接字符串’;数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样数据库全局名称可以用以下命令查出SELECT * FROM GLOBAL_NAME;查询远端数据库里的表SELECT …… FROM 表名@数据库链接名;
五.权限管理 (DCL) 语句
赋于权限常用的系统权限集合有以下三个:CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)常用的数据对象权限有以下五个:ALL
ON 数据对象名,
SELECT ON 数据对象名,
UPDATE ON 数据对象名,DELETE
ON 数据对象名,
INSERT ON 数据对象名,
ON 数据对象名GRANT CONNECT, RESOURCE TO 用户名;GRANT SELECT ON 表名 TO 用户名;GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;2.REVOKE 回收权限REVOKE CONNECT, RESOURCE FROM 用户名;REVOKE SELECT ON 表名 FROM 用户名;REVOKE SELECT, INSERT, DELETE ON表名 FROM 用户名1, 用户名2;查询数据库中第63号错误:select orgaddr,destaddr from sm_histable0116 where error_code='63';查询数据库中开户用户最大提交和最大下发数: select MSISDN,TCOS,OCOS from ms_usertable;查询数据库中各种错误代码的总和:select error_code,count(*) from sm_histable0513 group by error_code orderby error_查询报表数据库中话单统计种类查询。select sum(Successcount) from tbl_MiddleMt0411 where ServiceType2=111select sum(successcount),servicetype from tbl_middlemt0411 group by servicetype
oracle常用语句
2、显示当前连接用户
3、查看系统拥有哪些用户
4、新建用户并授权(默认建在表空间下)
5、连接到新用户
6、查询当前用户下所有对象
7、建立第一个表
8、查询表结构
9、插入新记录
10、查询记录
11、更改记录
12、删除记录
----------------------------------------------------------------
用户授权创建用户用户密码设定表空间创建
------------------------------------------------------------------------
1、查看当前所有对象
2、建一个和表结构一样的空表
3、察看数据库的大小,和空间使用情况
SQL & col tablespace format a20SQL & select b.file_id  文件    表空间       物理文件名         总字节数     已使用          剩余   剩余百分比            表空间剩余空间状况  数据文件空间占用情况 、查看现有回滚段及其状态
5、查看数据文件放置的路径
6、显示当前连接用户
7、把当计算器
8、连接字符串
SQL & select 列列表列列表
9、查询当前日期
10、用户间复制数据
11、视图中不能使用,但可用代替来达到排序目的
12、通过授权的方式来创建用户
13、查出当前用户所有表名。
-----------------------------------------------------------------------
/* 向一个表格添加字段
/* 修改字段 属性 字段为空
/* 修改字段名字 改为
drop table alist_rename alist_table_copy to alist_table/* 修改表名
空值处理有时要求列值不能为空
在基表中增加一列
修改已有列属性注:只有当某列所有值都为空时,才能减小其列值宽度。只有当某列所有值都为空时,才能改变其列值类型。只有当某列所有值都为不空时,才能定义该列为。例:
查找未断连接
-----------------------------------------------------------------1.以开始的数据字典视图包含当前用户所拥有的信息查询当前用户所拥有的表信息以开始的数据字典视图包含用户所拥有的信息查询用户拥有或有权访问的所有表信息
3.以开始的视图一般只有数据库管理员可以访问
4.查询用户:
5.创建数据库用户:授权的格式权限删除用户或表向建好的用户导入数据表索引运算
返回查询结果中相同的部分
exp:各个部门中有哪些相同的工种
返回在第一个查询结果中与第二个查询结果不相同的那部分行记录。
有哪些工种在财会部中有,而在销售部中没有?
1. oracle安装完成后的初始口令
2. oracle9ias web cache的初始默认用户和密码?
3. oracle 8.0.5怎么创建数据库
用。假如有界面,可以用
4. oracle 8.1.7怎么创建数据库
5. oracle 9i 怎么创建数据库
6. oracle中的裸设备指的是什么
裸设备就是绕过文件系统直接访问的储存空间
7. oracle如何区分 版本???
8. svrmgr什么意思?
9i下没有,已经改为用了
变为归档日志型的
9. 请问如何分辨某个用户是从哪台机器登陆的
10. 用什么语句查询字段呢?
desc table_name 可以查询表的结构
select field_name,... from ... 可以查询字段的值
11. 怎样得到触发器、过程、函数的创建脚本?
12. 怎样计算一个表占用的空间的大小?
13. 如何查看最大会话数?
这里为个用户。
其中纪录曾经到达的最大会话数
14. 如何查看系统被锁的事务时间?
15. 如何以的方式运行。
16. 怎么获取有哪些用户在使用数据库
17. 数据表中的字段最大数是多少
表或视图中的最大列数为
18. 怎样查得数据库的
也可以直接查看 文件
19. 如何在服务器上通过查看本机地址
假如是登陆本机数据库,只能返回,呵呵
20. unix 下怎么调整数据库的时间?
21. 在中如何抓取类型字段为空的数据记录
22. 如何用表的数据去更新表的数据有关联的字段
23. p4计算机安装方法
24. 何查询是不是
假如则有能
25. 何查询每个用户的权限
26. 如何将表移动表空间
27. 如何将索引移动表空间
28. 在下如何启动
29. 查询锁的状况的对象有
查询锁的表的方法
30. 如何解锁
31. sqlplus下如何修改编辑器
define _editor="" -- 必须加上双引号
来定义新的编辑器,也可以把这个写在里面使它永久有效。
32. oracle产生随机函数是
33. linux下查询磁盘竞争状况命令
33. linux下查询竞争状况命令
34. 查询当前用户对象
35. 如何获取错误信息
36. 如何获取链接状况
37. 查看数据库字符状况
38. 查询表空间信息
39. oracle的用户要口令
40. 出现的解决办法
一般是将改成手工启动可以的
41. 如何给表、列加注释?
sql&comment on table 表 表注释
注释已创建。
sql&comment on column 表列 列注释
注释已创建。
42. 如何查看各个表空间占用磁盘情况?
b.file_id 文件号
b.tablespace_name 表空间名
b.bytes 字节数
(b.bytes-sum(nvl(a.bytes,0))) 已使用
sum(nvl(a.bytes,0)) 剩余空间
sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
43. 如把设置为或专用模式?
加上就是,注释就是专用模式,是指你的实例名。
44. 如何才能得知系统当前的号
45. 请问如何在中取毫秒
9i之前不支持开始有
风起云涌,一锅稀饭。
人生苦闷,开心就行。
向版主反映这个帖子 已记录
大家在应用的时候可能会碰到很多看起来不难的问题非凡对新手来说今天我简单把它总结一下发布给大家希望对大家有帮助和大家一起探讨共同进步
对高手来说是不用看的
46. 如何在字符串里加回车?
47. 中文是如何排序的?
oracle9i之前,中文是按照二进制编码进行排序的。
在中新增了按照拼音、部首、笔画排序功能。设置值
schinese_radical_m 按照部首(第一顺序)、笔划(第二顺序)排序
schinese_stroke_m 按照笔划(第一顺序)、部首(第二顺序)排序
schinese_pinyin_m 按照拼音排序
48. oracle8i中对象名可以用中文吗?
49. 如何改变中启动选项?
sql*plus自身的选项设置我们可以在中设置。
50. 怎样修改数据库的默认日期
可以在中加上一行
51. 如何将小表放入池中
52. 如何检查是否安装了某个
53. 如何使语句使查询结果自动生成序号
54. 如何知道数据裤中某个表所在的
select * from user_tables中有个字段,()
55. 怎么可以快速做一个和原表一样的备份表
55. 怎么在下修改
56. 怎样解除被意外锁定
alter system kill session ,把那个给杀掉,不过你要先查出她的
把该过程重新改个名字就可以了。
57. sql reference是个什么东西?
是一本的使用手册,包括语法、函数等等,官方网站的文档中心有下载
58. 如何查看数据库的状态
看服务是否起来
是否可以连上数据库
59. 请问如何修改一张表的主键
60. 改变数据文件的大小
手工改变数据文件的大小,对于原来的 数据文件有没有损害。
61. 怎样查看中有哪些程序在运行之中?
62. 怎么可以看到数据库有多少个
63. 如何修改数据库的用户连接数?
修改,将加大,重启数据库
64. 如何查出一条记录的最后更新时间
可以用察看
65. 如何在中读写文件?
utl_file包答应用户通过读写操作系统文件。
66. 怎样把“”放入一条记录中?
67. exp 如何加query参数?
query='"where emp_no="'s09394"'"" ﹔
68. 关于支持简体和繁体的字符集问题?
zhs16gbk可以支
69. data guard是什么软件?
就是的换代产品
70. 如何创建
文件已创建。
文件已创建。
71. 内核参数的应用
  含义:这个设置并不决定究竟数据库或者操作系统使用多少物理内存,只决定了最多可以使用的内存数目。这个设置也不影响操作系统的内核资源。
  设置方法:物理内存
  例子:
  含义:共享内存的最小大小。
  设置方法:一般都设置成为。
  例子::
  含义:系统中共享内存段的最大个数。
  例子:
  含义:每个用户进程可以使用的最多的共享内存段的数目。
  例子::
  含义:系统中的最大个数。
  设置方法:把这个变量的值设置为这个系统上的所有的实例的中的最大的那个的那个值加。
  例子:
  含义:系统中的最大个数。
  设置方法:这个值可以通过以下方式计算得到:各个实例的里边的的值的总和(除去最大的参数)+最大的那个×+×实例的个数。
  例子:
  含义:一个中的最大个数。
  设置方法:设置成为+所有实例的中最大的的值。
  例子:
72. 怎样查看哪些用户拥有、权限?
73. 如何单独备份一个或多个表?
exp 用户密码 表…表
74. 如何单独备份一个或多个用户?
exp system/manager owner=(用户用户…用户导出文件
75. 如何对字段进行全文检索?
76. 如何显示当前连接用户
77. 如何查看数据文件放置的路径
78. 如何查看现有回滚段及其状态
79. 如何改变一个字段初始定义的范围?
之后再创建新约束
80. oracle常用系统文件有哪些?
通过以下视图显示这些文件信息:
81. 内连接
82. 如何外连接
83. 如何执行脚本文件
84. 如何快速清空一个大表
85. 如何查有多少个数据库实例
86. 如何查询数据库有多少表
87. 如何测试语句执行所用的时间
88. chr()的反函数是
89. 字符串的连接
90. 怎么把出来的结果导到一个文本文件中?
91. 怎样估算执行的数
可以查看数
92. 如何在下改变字段大小
改大行,改小不行(除非都是空的)
93. 如何查询某天的数据
select * from table_name where trunc(日期字段=
94. sql 语句如何插入全年日期?
95. 假如修改表名
96. 如何取得命令的返回状态值?
97. 如何知道用户拥有的权限
98. 从网上下载的与市场上卖的标准版有什么区别?
从功能上说没有区别,只不过公司有明文规定;从网站上下载的产品不得用于 商业用途,否则侵权。
99. 怎样判定数据库是运行在归档模式下还是运行在非归档模式下?
进入,历程〉数据库〉归档查看。
100. sql&startup pfile和有什么区别?
pfile就是传统的初始化参数文件,文本格式的。
ifile类似于语言里的,用于把另一个文件引入
spfile是里新增的并且是默认的参数文件,二进制格式
startup后应该只可接
101. 如何搜索出前条记录?
102. 如何知道机器上的支持多少并发用户数
103. db_block_size可以修改吗
一般不可以﹐不建议这样做的。
104. 如何统计两个表的记录总数
select (select count(id) from aa)+(select count(id) from bb) 总数
105. 怎样用语句实现查找一列中第大值?
106. 如何在给现有的日期加上年?
107. used_ublk为负值表示什么意思
108. connect string是指什么
应该是中的服务名后面的内容
109. 怎样扩大的大小?
建立一个临时的组,然后切换日志,删除以前的日志,建立新的日志。
110. tablespace 是否不能大于
111. 返回大于等于的最小整数值
112. 返回小于等于的最小整数值
113. 返回当前月的最后一天
114. 如何不同用户间数据导入
115. 如何找数据库表的主键字段的名称
116. 两个结果集互加的函数
117. 两个结果集互减的函数
118. 如何配置
日期的各部分的常用的的写法
119&.取时间点的年份的写法
120&.取时间点的月份的写法
121&.取时间点的日的写法
122&.取时间点的时的写法
123&.取时间点的分的写法
124&.取时间点的秒的写法
125&.取时间点的日期的写法
126&.取时间点的时间的写法
127&.日期时间形态变为字符形态
128&.将字符串转换成日期或时间形态
129&.返回参数的星期几的写法
130&.返回参数一年中的第几天的写法
&!--EndFragment--&
浏览 10325
浏览: 373170 次
来自: 上海
果然有高人翻译啊,谢了~
字符串都不用单引号引着吗?&&&您需要以后才能回答,未注册用户请先。SQL 是用于访问和处理数据库的标准的计算机语言。
在本教程中,您将学到如何使用 SQL 访问和处理数据系统中的数据,这类数据库包括:Oracle, Sybase, SQL Server, DB2, Access 等等。
注:本教程中出现的姓名、地址等信息仅供教学,与实际情况无关。
在 W3School 测试你的 SQL 技能!一个求和的sql语句--sum - 心翼 - 博客园
表描述: 表名:Sum_TestId& && & Name& && & Count& && & Type1& && && & A& && && && && &12& && && &&&12& && && & B& && && && && &12& && && &&&13& && && & C& && && && &&&12& && && && &14& && && & D& && && && &&&12& && && && &15& && && & B& && && && &&&12& && && && &26& && && & B& && && && &&&12& && && && &17& && && & A& && && && &&&12& && && && &28& && && & A& && && && &&&12& && && && &19& && && & C& && && && &&&12& && && && &110& && &&&B& && && && &&&12& && && && & 1结果: Type 1 : 84& && &Type 2 : 36 求type&&为1和2的Count的总和,如果Name即有Type为1也有Type为2的,则该Count算到Type为2的里面,如: AType即有1也有2则A的求和时将A的Count值全部算作为Type=2里面方法一:现将Type为2的Name的Type值都改为2UPDATE&&Sum_Test&&SET&&Type=2 WHERE Name IN (SELECT Name FROM Sum_Test SHERE Type=2)然后再求和SELECT SUM(Count) FROM Sum_Test GROUP BY Type方法二:select sum([count]) from (select [count],[Type]='2' from sum_test where [name] in (select [name] from sum_test where type=2)UNION ALLselect [count],[Type]='1' from sum_test where [name] not in (select [name] from sum_test where type=2)) tgroup by [type]
这两种方法虽然可以得到想要的结果,但是有很大的弊端
select (select sum([count]) from sum_test) - (select sum(t.counts) from (select []name, sum([count]) counts from sum_test where [name] in(select [name] from sum_test where [type] = 2)group by [name]) t) type1, (select sum(t.counts) from (select [name], sum([count]) counts from sum_test where [name] in(select [name] from sum_test where [type] = 2)group by [name]) t) type2
写成一个过程的话我想执行效率会更好!
declare @SubTotal int,& && &&&@Total intset @SubTotal = (select sum(t.counts) from (select [name], sum([count]) counts from sum_test where [name] in(select [name] from sum_test where [type] = 2)group by [name]) t)set @Total = (select sum([count]) from sum_test)select @Total - @SubTotal type1, @SubTotal type2

我要回帖

更多关于 sql语句求总和 的文章

 

随机推荐