Oracle day15

/*create table f0307 (
id number
,productname varchar2(100)
,parentid number);
insert into f0307 values ( 1,'汽车',null);
insert into f0307 values ( 2,'车身',1);
insert into f0307 values ( 3,'发动机',1);
insert into f0307 values ( 4,'车门',2);
insert into f0307 values (5,'驾驶舱',2);
insert into f0307 values  (6,'行李舱',2);
insert into f0307 values ( 7,'气缸',3);
insert into f0307 values ( 8,'活塞',3);*/
select * from f0307;

select * from f0307 f1 full join f0307 f2 
on f1.id = f2.parentid;

-----------------------------------------------------------------------------------------------------
select distinct a.id,decode(b.parentid,null,'NULL',b.parentid) parentid,a.productname,b.orderid from
(select id,lpad(' ',level*2,' ')||productname productname
,level
from f0307
start with id = 1
connect by prior id=parentid) a
join
(with tt as(
select f2.id id2,f2.parentid parentid2,f2.productname name2,
f3.id id3,f3.parentid parentid3,f3.productname name3,
decode(f1.id,null,null,f1.id||'->')||f2.id||'->'||f3.id orderid 
from f0307 f1 full join f0307 f2 on f1.id = f2.parentid 
left join f0307 f3 
on f2.id = f3.parentid where f1.id = 1 or f1.id is null)
select tt.id2 id,tt.parentid2 parentid,tt.name2 productname,'1' orderid from tt where tt.id2 = 1
union all
select tt.id3,tt.parentid3,tt.name3,tt.orderid from tt where tt.id3 >=1) b 
on a.id =b.id;

-----------------------------------------------QTingLJQ------------------------------------------------
select id,decode(parentid,null,'NULL',parentid) parentid,lpad(' ',level*3,' ')||productname productname,
case when level=1 then to_char(id) 
     when level=2 then parentid||'->'||id
     when level=3 then 1||'->'||parentid||'->'||id
end orderid
from f0307
start with id=1
connect by prior id=parentid

-----------------------------------------------QTingXLJ------------------------------------------------
--sys_connect_by_path():反向拼接函数,例如sys_connect_by_path()

select id,decode(parentid,null,'NULL',parentid) parentid ,lpad(' ',level*2,' ')||productname as productname,
substr((sys_connect_by_path(id,'->')),3) orderid
from f0307
start with id=1
connect by prior id=parentid;


with auto(id,parentid,productname,orderid) as(
select 
id,parentid,productname,to_char(id) orderid
from f0307 f1
where parentid is null
union all
select
f2.id,f2.parentid,f2.productname,
auto.orderid||'->'||f2.id
from auto join
f0307 f2 
on auto.id=f2.parentid
)
select id,parentid,lpad(' ',level-1,' ')||productname as productname,
orderid
from auto
start with id=1
connect by prior id=parentid;

-----------------------------------------------QTingWGD------------------------------------------------
with aaa as(
select connect_by_root parentid as c
from f0307
start with parentid=1
connect by prior id=parentid)
select a1.id,
(case when parentid is null then 'NULL' end)上id
,productname 名,
(case when parentid is null then to_char(a1.id) end) 上级 from f0307 a1,
(select distinct id,
(case when c=parentid then parentid||'>'||id 
      when parentid is null then to_char(id)
      else aaa.c||'>'||parentid||'>'||id end) a
from aaa,f0307) a2
where a1.id=1 and a1.id=a2.id
union all
select id,to_char(parentid),名,上级 from (
select b1.id,parentid,lpad(' ',level*2,' ')||productname as 名,
b2.a 上级,rownum r
from f0307 b1,(select distinct id,
(case when c=parentid then parentid||'->'||id 
      when parentid is null then to_char(id)
      else aaa.c||'->'||parentid||'->'||id end) a
from aaa,f0307 ) b2 where b1.id=b2.id
start with parentid in (1,2) 
connect by prior b1.id=b1.parentid) where r<=7;
-------------------------------------------------------------------------------------

--8.创建一个名为id_seq的升序Sequence,从10开始,递增10,最小值为10,最大值为100:
create sequence id_seq
       start with 10
       increment by 10
       minValue 10
       maxValue 100; 

--9.创建序列id_seq2,开始值为100,增幅是2,
--最大值是1000,设置循环,序列中的序号不在内存中进行缓冲:
create sequence id_seq2
       start with 100
       increment by 2
       maxValue 1000
       nocache
       cycle
       ;
select id_seq2.nextval from dual;

--10.创建一个1,3,5,7,9…30序列,设置循环,缓存数量为10个:
create sequence id_seq3
       start with 1
       increment by 2
       maxValue 30
       cache 10
       cycle;
select id_seq3.nextval from dual;

create synonym synonym_name for table_name;
grant select on synonym_name to public;

----DBLink
-- 查看当前用户是否具有创建DBLink的权限
select * from user_sys_privs 
where privilege like upper('%DATABASE LINK%');
-- 如果没有切换到sys,给当前用户赋予相关权限

-- 已经切换到sys
grant create public database link to scott;
grant drop public database link to scott;

-- 创建dblink
create database link dblink_1
connect to scott identified by "123456"
using '(description =
(address_list = (address=(protocol=tcp)(host= jiuze.top )(port=1521)))
(connect_data=(service_name=orcl))
)';

-- 查看数据中创建的dblink
select owner,object_name from dba_objects 
where object_type='DATABASE LINK';

-- dblink的使用
-- 直接查询
select * from emp@dblink_1;

-- 同义词包装
create synonym remote_db for emp@dblink_1;
select * from remote_db;

-- 视图包装
create view v_remote_db as select * from emp@DBLINK_1;
select * from v_remote_db;

-- 数据库的启动与关闭


-- 习题回顾
-- 1.
select * from f07;
select distinct f.a,sum(f.b)over(partition by f.a) b,
decode(sum(decode(f.c,'X',1,0))over(partition by f.a),0,'Y',1,'1',2,'X') c
from f07 f order by f.a;
-- 2.
select * from f216
select sum(cnt) from 
(select count(*)/2 cnt from f216 f1,f216 f2 where f1.numb !=f2.numb and f1.numb+f2.numb = 10
union all 
select count(*) from  f216 f1,f216 f2,f216 f3 
where f1.numb+f2.numb+f3.numb=10 
and f1.numb<f2.numb and f2.numb<f3.numb);
--3.查询学习‘c001’课程中优秀(91-100),良好(81-90),及格(60-80)各有多少人:
select cno,sum(case when score between 91 and 100 then 1 else 0 end) 优秀,
sum(case when score > 80 and score < 90 then 1 else 0 end) 良好,
sum(case when score between 60 and 80 then 1 else 0 end) 及格
 from sc where cno = 'c001' group by cno;

-- 4.按各科平均成绩从低到高和及格率的百分数从高到低顺序:
select cno,avg(score),sum(case when score >= 60 then 1 else 0 end)/count(*) fail from sc
 group by cno order by avg(score),fail desc;

-- 5.查询于1981年来公司所有员工的总收入(SAL和COMM):(假设没有人离职也没有新人,并且每个人的工资稳定不变)
select sum(sal) from
(select sum((sal+nvl(comm,0))*(12-extract(month from hiredate)+1)) sal from emp e 
union all
select sum((sal+nvl(comm,0))*12*(extract(year from sysdate)-extract(year from hiredate))) from emp e)
;
select sum(t1.sal+t2.sal) from (
select empno,(sal+nvl(comm,0))*(12-extract(month from hiredate)+1) sal from emp order by empno) t1 
join
(select empno,(sal+nvl(comm,0))*12*(extract(year from sysdate)-extract(year from hiredate)) sal from emp order by empno) t2
on t1.empno = t2.empno;

-- 6.查找字符串‘10,A,B,c,#’中逗号‘,’出现的次数:
select length('10,A,B,c,#') - length(replace('10,A,B,c,#',',','')) from dual;

-- 7.查询累计当月,到日的订单量:
-- 电脑订单表
-- 日期---下单量
-- 2.1----310
-- 2.2----590
-- 2.3----230
-- 2.4----70
-- 2.5----460
-- 2.6----90
-- 2.7----550
-- 2.8----100
-- 2.9---50
-- 实现累加(利用开窗聚合函数或者表连接)
select f.dates,sum(amount)over(order by f.dates) amount from f23 f;


-- 8.查询出从第一条记录开始到第几条记录的累计金额刚好超过100?
select * from f224;
select numb,jine,rownum  from
(select f.numb,sum(f.jine)over(order by f.numb) jine from f224 f)
where jine > 100 and rownum = 1;

-- 9.根据'VIKI','GLEN','ROBIN','NICK','TOTAL'的顺序进行排序(自定义排序):
select * from (
select 'NICK' as item,12 age from dual
union all
select 'VIKI',8 from dual
union all
select 'GLEN',25 from dual
union all
select 'ROBIN',30 from dual
union all
select 'TOTAL',60 from dual
) p order by decode(p.item,'VIKI',1,'GLEN',2,'ROBIN',3,'NICK',4,'TOTAL',5)

-- 10
select * from f801;
with t as
(select to_char(f.日期,'yyyy-MM') 日期,decode(f.类型,'借款',f.金额,0) 借款金额,
decode(f.类型,'还款',f.金额,0) 还款金额 from f801 f)
select tt.日期,tt.借款金额,tt.还款金额,sum(tt.借款金额)over(order by tt.日期) 累计借款,
 sum(tt.还款金额)over(order by tt.日期) 累计还款 from
(select distinct t.日期,sum(t.借款金额)over(partition by t.日期 ) 借款金额,
sum(t.还款金额)over(partition by t.日期) 还款金额
from t )tt; 

select * from f801;

select t.日期,t.借款金额,t.还款金额,
sum(t.借款金额)over(order by t.日期) 累计借款,
sum(t.还款金额)over(order by t.日期) 累计还款
from
(select to_char(f.日期,'yyyy-MM') 日期,
sum(decode(f.类型,'借款',f.金额,0))  借款金额,
sum(decode(f.类型,'还款',f.金额,0))  还款金额
from f801 f group by to_char(f.日期,'yyyy-MM')) t 


select t.月份,t.借款 as 借款金额, t.还款 as 还款金额,
sum(t.借款)over(order by t.月份) as 累计借款,
sum(t.还款)over(order by t.月份) as 累计还款 
from(
select to_char(f.日期,'yyyy-MM') as 月份,
sum(decode(f.类型,'借款',f.金额,0)) 借款,
sum(decode(f.类型,'还款',f.金额,0)) 还款
from F801 f group by to_char(f.日期,'yyyy-MM')) t group by t.月份,t.借款,t.还款;
--11.
select * from f16;
select distinct t."date",sum(t.新客人数)over(partition by t."date" order by 新客人数) 新客人数,
sum(t.旧客人数)over(partition by t."date" order by 旧客人数) 旧客人数
from(select to_char(xd_time,'yyyy-MM-dd') as "date",decode(times,1,1,0) 新客人数,
case when times>1 then 1 else 0 end 旧客人数
from(select xd_time,user_name,row_number()over(partition by user_name order by xd_time) times from f16 ) )t order by t."date";


---------------------------------------------------------------------------------------
/*CREATE TABLE F880(
  user_id number,
  times date
);
INSERT INTO F880 VALUES (1,to_date('2021-12-07 21:13:07','yyyy_mm_dd hh24:mi:ss'));
INSERT INTO F880 VALUES (1,to_date('2021-12-07 21:15:26','yyyy_mm_dd hh24:mi:ss'));
INSERT INTO F880 VALUES (1,to_date('2021-12-07 21:17:44','yyyy_mm_dd hh24:mi:ss'));
INSERT INTO F880 VALUES (2,to_date('2021-12-13 21:14:06','yyyy_mm_dd hh24:mi:ss'));
INSERT INTO F880 VALUES (2,to_date('2021-12-13 21:18:19','yyyy_mm_dd hh24:mi:ss'));
INSERT INTO F880 VALUES (2,to_date('2021-12-13 21:20:36','yyyy_mm_dd hh24:mi:ss'));
INSERT INTO F880 VALUES (3,to_date('2021-12-21 21:16:51','yyyy_mm_dd hh24:mi:ss'));
INSERT INTO F880 VALUES (4,to_date('2021-12-16 22:22:08','yyyy_mm_dd hh24:mi:ss'));
INSERT INTO F880 VALUES (4,to_date('2021-12-02 21:17:22','yyyy_mm_dd hh24:mi:ss'));
INSERT INTO F880 VALUES (4,to_date('2021-12-30 15:15:44','yyyy_mm_dd hh24:mi:ss'));
INSERT INTO F880 VALUES (4,to_date('2021-12-30 15:17:57','yyyy_mm_dd hh24:mi:ss'));*/


select * from f880;

-- 求每个用户相邻两次浏览时间之差小于三分钟的次数:

select distinct f1.user_id,decode(f2.cnt,null,'0',f2.cnt) cnt 
from f880 f1 left join
(select b.user_id,count(*) cnt from 
(with t as (select f.user_id,f.times,(f.times-3/(24*60)) a,
row_number()over(partition by f.user_id order by f.times ) r 
from f880 f)
select t1.user_id,t1.times,t2.a from t t1 
left join t t2 on t1.r + 1 = t2.r 
where t2.a < t1.times and t1.user_id = t2.user_id) b 
group by b.user_id) f2 on f1.user_id = f2.user_id 
order by f1.user_id ;

-- 使用偏移开窗函数
select t.user_id,sum(case when t.times>t.lead_times-3/(24*60) then 1 else 0 end) cnt from
(select f.*,lead(f.times,1,f.times+1)over(partition by f.user_id order by f.times) lead_times from f880 f) t
group by t.user_id;

-----------------------------------------------QTingLJQ------------------------------------------------

--求每个用户相邻两次浏览时间之差小于三分钟的次数:
with def_f as
(select f.*,row_number()over(partition by user_id order by times) r
from F880 f)

select ff.user_id,sum(a) 次数 from
(select f1.user_id user_id,f1.times,f2.times,(f1.times-f2.times)*24*60,
case when (f1.times-f2.times)*24*60<3 then 1 else 0 end a
from def_f f1 join def_f f2 
on f1.user_id=f2.user_id and f1.r=f2.r+1) ff
group by ff.user_id;

-----------------------------------------------QTingXLJ------------------------------------------------

--求每个用户相邻两次浏览时间之差小于三分钟的次数:
-- lead()over():偏移函数
select user_id,sum(case when t1<((1/24)/60)*3 then 1 else 0 end) sum1 from
(select user_id,times,lead1-times t1 from
(select user_id,times,lead(times,1,times+1)over(partition by user_id order by times) lead1
from f880))
group by user_id;


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/755888.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

合并排序的数组

题目链接 合并排序的数组 题目描述 注意点 A的末端有足够的缓冲空间容纳BA和B都是排序的 解答思路 最初想到的是双指针&#xff0c;从小到大找到合并B时应该A相应位置应该插入的元素&#xff0c;因为在插入的过程中B的元素会替换A原有位置的元素&#xff0c;所以需要先将A…

YOLOv8目标检测在RK3588部署全过程

一&#xff0c;前言 这是一个关于从电脑安装深度学习环境到实现YOLOv8目标检测在RK3588上部署的全过程。 本人配置&#xff1a; 1&#xff0c;一台笔记本 2&#xff0c;一个香橙派5s 二&#xff0c;深度学习环境配置 2.1 安装anaconda 使用清华镜像源下载https://mirror…

巴黎成为欧洲AI中心 大学开始输出AI创始人

来自Dealroom 的数据显示&#xff0c;在欧洲和以色列AI创业公司中&#xff0c;法国的AI创业公司资金最充裕。Mistral、Owkin、Hugging Face等法国企业已经融资23亿美元&#xff0c;比英国、德国AI创业公司都要多。 一名大学生走出校门凭借聪明才智和一个黄金点子成为富豪&#…

使用matlab开发stm32总结,stm32-matlab常见的问题处理以及报错合集

1&#xff0c;问题&#xff1a;本来是好的&#xff0c;突然编译运行报错&#xff0c;说是确少包&#xff0c; 解决方案&#xff1a;重启以后好了 2&#xff0c;有完美的马鞍波&#xff0c;为什么不能够转动呢&#xff1f; 原因是我这里模型的问题&#xff0c;我计算出来的是占…

考试选择题改写代码到编译器正确运行

1. 尝试变换形式&#xff0c;如果*p &a>>>>>>>不正确>>>>>>>>尝试先定义指针p>>>>>再写 pa 或者 *p &a[0] p所指向的是第一个首元素的地址 >>>>>>>之后最快的方式是把四个选项一…

Python 面试【★★★★】

欢迎莅临我的博客 &#x1f49d;&#x1f49d;&#x1f49d;&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

计算神经网络中梯度的核心机制 - 反向传播(backpropagation)算法(1)

计算神经网络中梯度的核心机制 - 反向传播&#xff08;backpropagation&#xff09;算法&#xff08;1&#xff09; flyfish 链式法则在深度学习中的主要应用是在反向传播&#xff08;backpropagation&#xff09;算法中。 从简单的开始 &#xff0c;文本说的就是链式法则 R …

【Stable Diffusion】创意与科技的完美结合:AI绘画副业让美术老师月入2w+

前言 艺术与科技一直以来都是两个看似独立的领域&#xff0c;但如今&#xff0c;随着人工智能的发展&#xff0c;这两个领域正迎来一次前所未有的融合。在这个数字化时代&#xff0c;AI绘画成为了一项引人注目的副业&#xff0c;为美术老师们带来了新的机遇和收入。 儿童画 …

650V 1200V 碳化硅MOS TO247 封装 内阻30毫欧 40 80毫欧

650V 1200V 碳化硅MOS TO247 封装 内阻30毫欧 40 80毫欧

matlab 计算导数

边界提取 一、算法原理1、主要函数2、参考文献二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、主要函数 Y = diff(X)计算沿大小不等于 1 的第一个数组维度的 X X…

计算机网络 —— 基本概念

基本概念 1. 通信协议2. 面向连接 v.s. 面向无连接3. 电路交换 v.s. 分组交换4. 单工通信 v.s. 双工通信 1. 通信协议 通信协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”。这种“约定”使那些由不同厂商的设备、不同的CPU 以及不同的操作系统组成的计算…

黑芝麻科技A1000简介

文章目录 1. A1000 简介2. 感知能力评估3. 竞品对比4. 系统软件1. A1000 简介

pdf合并,pdf合并成一个pdf,pdf合并在线网页版

在处理pdf文件的过程中&#xff0c;有时我们需要将多个pdf文件合并成一个pdf文件。作为一名有着丰富计算机应用经验的技术博主&#xff0c;我将为您详细介绍如何将多个pdf文件合并成一个pdf文件。 pdf合并方法&#xff1a;使用&#xff0c; “轻云处理pdf官网” 打开 “轻云处…

有序充电在新能源行业的前景与应用

作为新能源汽车的基础动力装置&#xff0c;交流充电桩也是可以促使新能源汽车正常行驶的关键内容。近年来我国新能源汽车的增长速度出现明显的上升趋势&#xff0c;但是其充电桩的发展还比较缓慢。目前在充电桩系统设计期间仍存在一些问题&#xff0c;主要表现在充电设施短缺、…

负载均衡器有什么用?

负载均衡器有什么用&#xff1f; 负载均衡器是一种在多个服务器之间分配网络或应用程序流量的设备或软件应用程序。其主要目的是确保没有一台服务器承担过多的需求&#xff0c;从而提高应用程序的响应速度和可用性。 在计算机发展的早期&#xff0c;负载均衡是一个手动过程。…

python-斐波那契数列

[题目描述] 斐波那契数列是指这样的数列&#xff1a;数列的第一个和第二个数都为 1&#xff0c;接下来每个数都等于前面 2个数之和。 给出一个正整数 a&#xff0c;要求斐波那契数列中第 a 个数是多少。输入&#xff1a; 第 1 行是测试数据的组数 n&#xff0c;后面跟着 n 行输…

版本控制工具-git分支管理

目录 前言一、git分支管理基本命令1.1 基本命令2.1 实例 二、git分支合并冲突解决三、git merge命令与git rebase命令对比 前言 本篇文章介绍git分支管理的基本命令&#xff0c;并说明如何解决git分支合并冲突&#xff0c;最后说明git merge命令与git rebase命令的区别。 一、…

Flink作业执行之 4.JobGraph

Flink作业执行之 4.JobGraph 1. 入口 前文了解了由Transformation到StreamGraph的过程&#xff0c;StreamGraph即作业的逻辑拓扑结构。 生成逻辑结构后&#xff0c;接下来的操作往往是对逻辑结构的优化。在很多组件中都是这样的处理&#xff0c;如hive、spark等都会执行“逻辑…

【python】OpenCV—QR Code

文章目录 1 QR Code2 准备工作3 生成 QR 码4 读取 QR 码5 与 Zbar 比较 1 QR Code QR Code&#xff08;Quick Response Code&#xff09;是一种二维条码&#xff0c;由日本Denso-Wave公司于1994年发明。QR Code的主要特点是存储信息量大、编码范围广、容错能力强、识读速度快&…

Docker Compose 一键快速部署 RocketMQ

Apache RocketMQ是一个开源的分布式消息中间件系统&#xff0c;最初由阿里巴巴开发并贡献给Apache软件基金会。RocketMQ提供了高性能、高可靠性、高扩展性和低延迟的消息传递服务&#xff0c;适用于构建大规模分布式系统中的消息通信和数据同步。 RocketMQ支持多种消息模型&am…
最新文章