ORACLE 查询问题~~以下比较笨的方法,期待好一些方法:
select * from (select 姓名,成绩 from 学生 order by 成绩 desc) C where rownum=10;
对补充的说明:我在8.0.5.0.0做了测试,结果是OK的 。测试假设学生是唯一的,
成绩是可能有重复的 。
1.创建新测试表:
create table student(sno varchar2(10),score number)
2.新增测试记录:
insert into student (sno,score) values('1001',20);
insert into student (sno,score) values('1002',30);
insert into student (sno,score) values('1003',40);
insert into student (sno,score) values('1004',50);
insert into student (sno,score) values('1005',60);
insert into student (sno,score) values('1006',60);
insert into student (sno,score) values('1007',75);
insert into student (sno,score) values('1008',75);
insert into student (sno,score) values('1009',80);
insert into student (sno,score) values('1010',80);
insert into student (sno,score) values('1011',85);
insert into student (sno,score) values('1012',85);
insert into student (sno,score) values('1013',85);
insert into student (sno,score) values('1014',90);
insert into student (sno,score) values('1015',90);
commit
select * from student order by 1
3.运行如下查询:
select aa.sno,aa.score
from student aa,
(select a.sno
from student a,student b
where a.score=b.score
group by a.sno
having count(a.sno)=(select min(cnt) from
(
select sno,count(*) as cnt
from
(
select a.sno
from student a,student b
where a.score=b.score
)
group by sno
) where ceil(cnt)=10)
) bb
where aa.sno=bb.sno
order by aa.score desc
结果显示是OK的,但如果第10名成绩有重复的,会一起显示出来,也就结果可能显示有11行 。也可强行生成前10行 , 那么,程序就要改一下,把values这个值改为9,然后,再取下一个值为11的一行(大致意思:where count(*)=11 and rownum=1 , 当然这个值11可能也不是固定的,要分析处理),然后union一下,但这种做法,运算的复杂性已经比较大了,建议用oracle临时表或是游标之类的来处理
附查询说明:
1.select a.sno
from student a,student b
where a.score=b.score
group by a.sno
having count(a.sno)=value
查询是通过对student进行对比,产生对比的记录 , 成绩越小就会产生越多的记录,使用having count(a.sno)=values来过滤出前10名,如果成绩不重复的话,这个values就可以直接写上10了.但实际上成绩是可能重复的,看下一步说明
2.values=(select min(cnt) from
(
select sno,count(*) as cnt
from
(
select a.sno
from student a,student b
where a.score=b.score
)
group by sno
) where ceil(cnt)=10)
【Oracle怎么看离散度 oracle怎么看序列】在student的两表对比中,有此规律,重复行数就是排名的前几名数(这个一定要明白,可以先分析一下).所以我们两表关联后 , 就可以count(*)一下行数,取
ceil(cnt)=10,就可以得到values的阈值,这样就可以把这个值传给上一个查询条件(因为count(*)值是离散的,所以前10名的这个值10 , 可能会不存在的)
其它应该比较好理解了 。
希望对你有所帮助 , 谢谢!
oracle表分区和索引分区一 分区表技术概述
二 分区索引技术概述
⑴ 本地前缀分区索引
适用场景:
如果历史数据整理非常频繁、而且不能承受全局分区索引重建的长时间带来的索引不可用
同时、日常交易性能尚能接受、则建议设计为本地非前缀分区索引
注意:本地分区索引不能保证唯一性(除非分区键是约束的一部分)
缺点:
主要体现在数据的高可用性方面
当DROP分区后、全局分区索引则全部INVALID、除非REBULID
但数据量越大、重建索引的时间越长
一般来讲,如果需要将数据按照某个值逻辑聚集,多采用范围分区 。如基于时间数据的按“年”、“月”等分区就是很典型的例子 。在许多情况下,范围分区都能利用到分区消除特性( ===between…and等筛选条件下) 。
如果在表里无法找到一个合适的属性来按这个属性完成范围分区 , 但你又想享受分区带来的性能与可用性的提升,则可以考虑使用散列分区 。(适合使用 = IN 等筛选条件)
如果数据中有一列或有一组离散值,且按这一列进行分区很有意义,则这样的数据就很适合采用列表分区 。
如果某些数据逻辑上可以进行范围分区 , 但是得到的范围分区还是太大,不能有效管理,则可以考虑使用组合分区(范围分区 hash 或范围分区 列表分区) 。
create table products_table
(
id number(2),
name varchar2(50),
sale_date date
)
partition by range(sale_date)
interval (numtoyminterval(1,'month'))
(
partition p_month_1 values less than (to_date('2016-01-01','yyyy-mm-dd'))
)
如图,取 products_table 中的 sale_date 列作为分区键创建按月自增分区;
所有销售时间在 ‘2016-01-01’之前的记录都会被放入 p_month_1 分区;
销售时间在‘2016-01-01’之后的记录在插入时Oracle会自动创建记录所属月的分区;
比如当有销售时间分别为 2016年1月20日 与 2016年2月20日 的两条记录插入时,Oracle会分别创建一个上限值为 ‘2016-01-31’的分区和一个上限值为‘2016-02-29’的分区来存储这两条记录
oracle Fixed Size什么意思fixed size就是SGA中固定组件(它在编译oracle 数据库本身时就固定于其中)Oracle怎么看离散度的大小 。它是固定大小Oracle怎么看离散度的内存 , 用来指向SGA的其它部分 。SGA这一部分的大小是不能改变的
oracle 离散任务是什么意思可变提前期与产量相关,一般在加工过程;固定提前期与产量无关,一般指工序准备阶段 。
对于成品或半成品你是不是应该在工艺路线上设置标准时间为10分钟每道工序,而不是在ITEM设置可变提前期 。
oracle sqlplus命令汇总1.sqlplus需要输入账号密码才能登陆Oracle怎么看离散度,此处只能一般账号(scott)和普通管理员(system)登陆
2.sqlplus /nolog可以直接登录到oracle(无需账号密码)
3. conn 用户名/密码@服务器IP地址:端口/实例名as连接身份
实例Oracle怎么看离散度: conn sys/123456@127.0.0.1:1521/orcl as sysdba
1)查看oracle服务端监听器状态:
lsnrctl status
2)如果没有监听:lsnrctl stoplsnrctl start
3)发现端口是1525而不是1521Oracle怎么看离散度,问题最终解决Oracle怎么看离散度!
4.执行系统命令
host系统命令eg:hostmkdird:\testoracle#在D盘创建一个叫testoracle的文件夹
5.清屏: clear screen
6.查看error信息: showerror
7.查看当前登录的用户show user
8.导出记录到本地的文件中:
spool指定导出到本地的文件名
关闭导出记录:spooloff
9.导入sql文件:
startsql文件存放的位置
10.密码修改:passw修改当前用户的密码Oracle怎么看离散度 , 如需修改其他用户的密码,必须使用sys账号修改
11.环境变量设置:
临时修改,重启下sqlplus就会丢失设置
setlinesize60(默认80 , show linesize 显示) 设置显示行的高度
set pagesize20(默认14,showpagesize)设置每页显示的行数
永久修改:
文件位置:E:\oracle\Administrator\product\11.2.0\dbhome_1\sqlplus\admin\glogin.sql
添加内容如下:
setlinesize60
set pagesize20
oracle数据库中SID到底什么意思?怎么用?SID的意思是oracle数据库的唯一标识符是你在建立一个数据库时系统自动赋予的一个初始ID 。
SID主要用于在一些DBA操作以及与操作系统交互,从操作系统的角度访问实例名,必须通过ORACLE SID,且它在注册表中也是存在的 。
扩展资料
如何查询当前用户的SID:
1、按【WinR】快捷键 , 在弹出的运行对话框中输入【cmd】后按回车键
2、在命令提示符窗口中输入"whoami/user",按回车键
3、然后就查出我当前的用户名和对应的SID
Oracle怎么看离散度的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle怎么看序列、Oracle怎么看离散度的信息别忘了在本站进行查找喔 。
推荐阅读
- 虎牙直播王者有收益吗,虎牙直播就有钱吗
- 硬盘传输模式怎么调整大小,硬盘传输是什么意思
- 党报评论如何新媒体,党报头条新媒体
- 中粮品牌直播带货,中粮的视频
- go语言缓存库 golang channel 有缓存但是close掉
- 微信视频号和公众号解绑,微信视频号和公众号解绑怎么弄
- nc系统和erp系统区别,财务nc系统和erp区别
- 直播平台爱浪,爱浪直播违法吗?
- python求种类的函数 python怎么求函数值