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.mzph.cn/pingmian/37534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日期类(java)

文章目录 第一代日期类 Date常用构造方法SimpleDateFormat 日期格式化类日期转字符串&#xff08;String -> Date)字符串转日期 (String->Date) 第二代日期类 Calendar常用字段与如何得到实例对象相关 API 第三代日期类&#xff08;LocalDate\TIme)日期&#xff0c;时间&…

springboot + Vue前后端项目(第二十一记)

项目实战第二十一记 写在前面1. springboot文件默认传输限制2. 安装视频插件包命令3. 前台Video.vue4. 创建视频播放组件videoDetail.vue5. 路由6. 效果图总结写在最后 写在前面 本篇主要讲解系统集成视频播放插件 1. springboot文件默认传输限制 在application.yml文件中添…

pip安装neuralcoref失败ERROR

最终解决的方法如下&#xff1a; git clone https://github.com/huggingface/neuralcoref.git cd neuralcoref pip install -r requirements.txt python setup.py install 原始步骤&#xff1a; 安装 neuralcoref 的依赖&#xff1a; 安装编译 neuralcoref 所需的依赖项&am…

PHP If...Else 语句的深入解析

PHP If...Else 语句的深入解析 在PHP编程语言中&#xff0c;if...else 语句是一种基本且强大的控制结构&#xff0c;它允许根据特定条件执行不同的代码块。这种结构对于决策制定和流程控制至关重要&#xff0c;是每位PHP开发者必须熟练掌握的内容。本文将详细探讨if...else语句…

boost asio异步服务器(4)处理粘包

粘包的产生 当客户端发送多个数据包给服务器时&#xff0c;服务器底层的tcp接收缓冲区收到的数据为粘连在一起的。这种情况的产生通常是服务器端处理数据的速率不如客户端的发送速率的情况。比如&#xff1a;客户端1s内连续发送了两个hello world&#xff01;,服务器过了2s才接…

MCU解决800V电动汽车牵引逆变器的常见设计挑战的3种方式

电动汽车 (EV) 牵引逆变器是电动汽车的。它将高压电池的直流电转换为多相&#xff08;通常为三相&#xff09;交流电以驱动牵引电机&#xff0c;并控制制动产生的能量再生。电动汽车电子产品正在从 400V 转向 800V 架构&#xff0c;这有望实现&#xff1a; 快速充电 – 在相同…

WPF 2024 金九银十 最新 高级 架构 面试题 C#

含入门 初级 中级 高级 不同级别WPF的面试题 相关面试题 redis安装说明书 http://t.csdnimg.cn/iM260 单体并发瓶颈 redis sqlsever mysql多少 http://t.csdnimg.cn/DTXIh Redis高频面试题http://t.csdnimg.cn/FDOnv 数据库SqlServer笔试题 数据库SqlServer笔试题-CSDN博客 SQL…

绝了!Stable Diffusion做AI治愈图片视频,用来做副业简直无敌!10分钟做一个爆款视频保姆教程

一 项目分析 这个治愈类视频的玩法是通过AI生成日常生活场景&#xff0c;制作的vlog&#xff0c;有这样的一个号&#xff0c;发布了几条作品&#xff0c;就涨粉了2000多&#xff0c;点赞7000多&#xff0c;非常的受欢迎。 下面给大家看下这种作品是什么样的&#xff0c;如图所…

探索高效开发神器:Blackbox AI(免费编程助手)

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 &#x1f916; 想要代码生成&#xff1f;&#x1f44c; &#x1f4ac; 需要和AI聊天解决难题&#xff1f;&#…

Ubuntu使用c++

Ubuntu使用c 一、安装编译器和开发工具二、创建一个c文件并运行1.创建一个c2.编译运行 一、安装编译器和开发工具 先安装vim sudo apt install vim再安装GUN编译器合集&#xff08;GCC&#xff09; sudo apt install build-essential使用g -v查看版本确定安装成功 二、创建…

Javaweb-初学

1.利用springboot开发一个web应用 简要流程&#xff0c;如下图 2.如何创建一个springboot的项目&#xff0c;下面两张图片是重点关注 第一张图片记得和图片一样改一下路径 第二张就是勾一个选项 3.第一个简单的springboot应用的开发 根据如下步骤进行操作 首先顶部要标识Res…

TensorFlow的学习1.2-基本概念

TensorFlow的学习2-基本概念 1. 张量&#xff08;Tensor&#xff09;2. 变量&#xff08;Variable&#xff09;3. 操作&#xff08;Operation&#xff09;4. 计算图&#xff08;Computational Graph&#xff09;5. 会话&#xff08;Session&#xff09;6. Eager Execution7. 数…

LinkedIn被封原因和解封方法

对于初识领英和对领英生态规则不熟悉的人来说&#xff0c;很容易造成领英账号被封号(被限制登录)的情况&#xff0c;那么如何才能避免和解决领英帐号被封号(被限制登录)的难题呢&#xff1f; 领英帐号被封号或被限制登录主要会有两类情况。 首先要搞清楚&#xff0c; Linkedi…

IP白名单及其作用解析

在网络安全领域&#xff0c;IP白名单是一项至关重要的策略&#xff0c;它允许特定的IP地址或地址范围访问网络资源&#xff0c;从而确保只有受信任的终端能够连接。下面&#xff0c;我们将深入探讨IP白名单的定义、作用以及实施时的关键考虑因素。 一、IP白名单的定义 IP白名单…

HTML与Python生成验证码的对比分析

前言 验证码&#xff08;CAPTCHA&#xff09;是确保用户行为为人类而非机器人自动执行的一种安全机制。通过图形、文字、或其他手段生成复杂的验证码来防止自动化攻击是一种常见的方法。本文将对比分析使用HTML与JavaScript和Python生成验证码的两种方式&#xff0c;探讨各自的…

【scau大数据原理】期末复习——堂测题

一、集群安装知识 启动集群的命令start-all.sh位于 Hadoop安装目录的sbin文件夹 目录下。 bin文件夹下包含常见的Hadoop,yarn命令&#xff1b;sbin命令下包含集群的启动、停止命令。 启动集群的命令start-all.sh包含 同时启动start-dfs.sh和start-yarn.sh 功能。…

AI与Python共舞:如何利用深度学习优化推荐系统?

AI与Python共舞&#xff1a;如何利用深度学习优化推荐系统&#xff1f; 当你在浏览新闻、电影或是购物平台时&#xff0c;那些仿佛读懂你心思的个性化推荐背后&#xff0c;正是AI技术与Python语言的精妙协作。今天&#xff0c;我们将通过一个实际案例&#xff0c;探索如何利用…

Python 面试【中级】

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

已解决javax.xml.bind.MarshalException:在RMI中,参数或返回值无法被编组的正确解决方法,亲测有效!!!

已解决javax.xml.bind.MarshalException&#xff1a;在RMI中&#xff0c;参数或返回值无法被编组的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 服务器端代码 客户端代码 报错原因 解决思路 解决方法 1. 实现…

大数据面试题之Hive(1)

说下为什么要使用Hive?Hive的优缺点?Hive的作用是什么? 说下Hive是什么?跟数据仓库区别? Hive架构 Hive内部表和外部表的区别? 为什么内部表的删除&#xff0c;就会将数据全部删除&#xff0c;而外部表只删除表结构?为什么用外部表更好? Hive建表语句?创建表时使…