十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
select 文件夹名称, 日期, 数量,sum(数量)over(partition by 文件夹名称 order by 日期) 汇总结果
十余年的海晏网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整海晏建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“海晏网站设计”,“海晏网站推广”以来,每个客户项目都认真落实执行。
from 视图名
既然表1是末级数据,那么可以从这个数据中截取出上级的代码,可以先截取,形成新的视图,然后再利用rollup分组,最后在和b表关联,就能得到C了。
类似:select acc_1,acc_2,acc_3,acc_4,acc_5,acc_code,sum(qmjf)(select substr(acc_code,1,4) acc_1,substr(acc_code,1,7) acc_2,substr(acc_code,1,9) acc_3,substr(acc_code,1,11)acc_4,substr(acc_code,1,13) acc_5,acc_code,qmjf from 表1) a group by rollup(acc_code,acc_5,acc_4,acc_3,acc_2,acc_1)
直接用截取分组应该也可以,不过这个就要去尝试了,我这里没有环境测试啊,这个就要靠你自己了。上面的语句也不一定对(比如如果没有5002,那么acc_1那个不截取也可以),我只是写个意思啊。
至于页面上的显示,java判断一下,acc_5有内容就显示这个,要么就判断acc_4,然后一直判断到acc_1。
如果非要展示在一列里面,那么只能是分别查询然后union all了。
类似:
select substr(acc_code,1,4),sum(qmjf) from table group by substr(acc_code,1,4)
union all
select substr(acc_code,1,7),sum(qmjf) from table group by substr(acc_code,1,7)
union all
。。。。。。写完你需要的
然后再去关联B表,或者写的时候直接写上。不过这个要group by N遍表。估计执行计划会吓死人的。虽然上一个也不怎么样,但是好歹是一个语句。
以下是对Oracle中的数据库基本常用命令进行了总结介绍 需要的朋友可以过来参考下
得到数据库名和创建日期 SELECT name created log_mode open_mode FROM v$database;
ORACLE数据库的计算机的主机名 ORACLE数据库的实例名及ORACLE数据库管理系统的版本信息 SELECT host_name instance_name version FROM v$instance;
为了知道oracle数据库版本的一些特殊信息 select * from v$version;
获取控制文件名字 select * from v$controlfile;
得到Oracle数据库的重做日志配置信息 SELECT group# members bytes status archived FROM v$log; select GROUP# MEMBER from v$logfile;
获取oracle的每个重做日志(成员)文件所存放的具 *** 置 select * from v$logfile;
知道ORACLE数据库的备份和恢复策略和归档文件的具 *** 置 archive log list
知道ORACLE数据库中到底有多少表空间以及每个表空间的状态 select tablespace_name block_size status contents logging from dba_tablespaces; select tablespace_name status from dba_tablespaces;
知道每个表空间存在哪个磁盘上以及文件的名字等信息 SELECT file_id file_name tablespace_name status bytes from dba_data_files; select file_name tablespace_name from dba_data_files;
知道Oracle数据库系统上到底有多少用户和都是什么时候创建的 select username created from dba_users; select username DEFAULT_TABLESPACE from dba_users;
从控制文件中取出信息涉及到以下一些相关的命令
复制代码 代码如下: select * from v$archived select * from v$archived_log select * from v$backup select * from v$database select * from v$datafile select * from v$log select * from v$logfile select * from v$loghist select * from v$tablespace select * from v$tempfile
控制文件由两大部份组成 可重用的部份和不可重用的部分 可重用的部分的大小可用 CONTROL_FILE_RECORD_KEEP_TIME 参数来控制 该参数的默认值为 天 即可重用的部份的内容保留 天 一周之后这部份的内容可能被覆盖 可重用的部份是供恢复管理器来使用的 这部份的内容 可以自动扩展 Oracle数据库管理员可以使用CREAT DATABASE或 CREAT CONTROLFILE语句中的下列关键字(参数)来间接影响不可重用的部份的大小
复制代码 代码如下: MAXDATAFILES MAXINSTANCES MAXLOGFILES MAXLOGHISTORY MAXLOGMEMBERS
查看控制文件的配置 SELECT type record_size records_total records_used FROM v$controlfile_record_section;
如果您的显示被分成了两部分 您需要使用类似于set pagesize 的SQL*Plus命令先格式化输出 有关的格式化输出命令有以下这些 record_size 为每个记录的字节数 records_total 为该段所分配的记录个数 records_used 为该段所使用的记录个数
知道控制文件中的所有数据文件(DATAFILE) 表空间(TABLESPACE) 和重做日志(REDO LOG)所使用的记录情况 SELECT type record_size records_total records_used FROM v$controlfile_record_section WHERE type IN ( ‘DATAFILE ‘TABLESPACE ‘REDO LOG );
获取控制文件名字 select value from v$parameter where name = control_files ; 或者 select * from v$controlfile
如何在一个已经安装的Oracle数据库中添加或移动控制文件呢? 以下是在一个已经安装的Oracle数据库中添加或移动控制文件的具体步骤
a 利用数据字典v$controlfile来获取现有控制文件名字
b 正常关闭Oracle数据库
c 将新的控制文件名添加到参数文件的CONTROL_FILES参数中
d 使用操作系统的复制命令将现有控制文件复制到指定位置
e 重新启动Oracle数据库
f 利用数据字典v$controlfile来验证新的控制文件名字是否正确
g 如果有误重做上述操作 如果无误删除无用的旧控制文件
注 如果您使用了服务器初始化参数文件(SPFILE) 您不能关闭Oracle数据库而且应该在第 步使用alter system set control_files的Oracle命令来改变控制文件的位置
复制代码 代码如下: SQL alter system set control_files = ‘D:\Disk \CONTROL CTL ‘D:\Disk \CONTROL CTL ‘D:\Disk \CONTROL CTL SCOPE=SPFILE;
由于控制文件是一个极其种要的文件 除了以上所说的将控制文件的多个副本存在不同的硬盘上的保护措施外 在数据库的结构变化之后 您应立即对控制文件进行备份 可以用Oracle命令来对控制文件进行备份 alter database backup controlfile to ‘D:\backup\control bak ;
您也可将备份到一个追踪文件中 该追踪文件包含有重建控制文件所需的SQL语句 可使用以下SQL语句来产生这一追踪文件 alter database backup controlfile to trace;
lishixinzhi/Article/program/Oracle/201311/19116
oracle中sum分组取值/汇总值用如下方法。
如emp表中有如下数据:
现要按deptno分组,求每组中sal的值/汇总值,可用如下语句:
select deptno,sum(sal)/(select sum(sal) from emp) from emp group by deptno;
查询结果:
如果是分别显示,可以写成两条语句:
select
avg(salary),deptno
from
a
group
by
deptno;
select
avg(salary),companyno
from
a
group
by
companyno;
如果需要用一条SQL实现,使用CUBE函数:
select
avg(salary),deptno,companyno
from
a
group
by
cube(deptno,companyno);