leetcode 数据库题 584,585,586,595,596,601,602,607,608,610

news2024/11/27 8:33:05

leetcode 数据库题 第三弹

  • 584. 寻找用户推荐人
  • 585. 2016年的投资
  • 586. 订单最多的客户
  • 595. 大的国家
  • 596. 超过5名学生的课
  • 601. 体育馆的人流量
  • 602. 好友申请 II :谁有最多的好友
  • 607. 销售员
  • 608. 树节点
  • 610. 判断三角形
  • 小结

584. 寻找用户推荐人

https://leetcode.cn/problems/find-customer-referee/

嗯。。。又是用 ifnull、nvl 的基础题目,把无数据的行列出即可。

# mysql
select name from customer where ifnull(referee_id,0)<>2
# mssql 
select name from customer where isnull(referee_id,0)<>2
# oracle
select name from customer where nvl(referee_id,0)<>2

在这里插入图片描述

CSDN 文盲老顾的博客,https://blog.csdn.net/superwfei

585. 2016年的投资

https://leetcode.cn/problems/investments-in-2016/

嗯。。。。这个题目描述的优点绕,其实翻译过来就两个条件,用 exists 和 not exists 把两个条件分别实现一下就可以。子查询需要把条件写的清晰才可以。

# 一拖三
select round(sum(tiv_2016),2) tiv_2016
from insurance a
where not exists(select 1 from insurance where lat=a.lat and lon=a.lon and pid<>a.pid)
and exists(select 1 from insurance where tiv_2015=a.tiv_2015 and pid<>a.pid)

586. 订单最多的客户

https://leetcode.cn/problems/customer-placing-the-largest-number-of-orders/

嗯,注意并列最多的情况,用 rank 排名函数辅助一下即可,结合 group 和 count(0) 就很轻松得到结果了。

# 一拖三,count(0) as cnt 不是必须的,可以删除掉
select customer_number  
from (
    select customer_number ,count(0) as cnt 
        ,rank() over(order by count(0) desc) rid
    from orders
    group by customer_number 
) a
where rid = 1

595. 大的国家

https://leetcode.cn/problems/big-countries/

。。。。不就是两个条件满足一个即可的么,这不就是一个简单的or么,这也可以做为题目出现?

# mysql && mssql
select name,population,area
from world
where area>=3000000
or population>=25000000

oracle 不知道为什么没能通过,一直提示数据类型错误?咱不熟悉,不了解,不知道,放弃 oracle 了

596. 超过5名学生的课

https://leetcode.cn/problems/classes-more-than-5-students/

不想讨论这个题目。

select class from courses
group by class having(count(0)>4)

601. 体育馆的人流量

https://leetcode.cn/problems/human-traffic-of-stadium/

总算又出现一个标注为困难的数据库题目了。简单来说,还是 180 的题目差不多,不过多要自己验证是否大于100出现连续,且要输出连续的片段。

# mysql && mssql
with t as (
    select a.*,(case when a.people>= 100 then 1 else 0 end) isC,row_number() over(order by id) rid
        ,row_number() over(partition by (case when a.people>= 100 then 1 else 0 end) order by id) nid
    from stadium a
) 
select id,visit_date,people
from t a 
inner join (
    select isC,rid-nid fid from t group by rid-nid,isC having(count(0) > 2)
) b on a.isC=b.isC and a.rid-a.nid=b.fid

oracle 其实用这个指令也没问题,可以一拖三,但是,oracle 版本,日期格式包含了时间部分,所以提交没有通过,只好在追加一个转换函数。

然后一路提交,oracle 报错了好几次。。。最后才发现,没有审题清楚,人家还要求升序排列。。。。

with t as (
    select a.*,(case when a.people>= 100 then 1 else 0 end) isC,row_number() over(order by id) rid
        ,row_number() over(partition by (case when a.people>= 100 then 1 else 0 end) order by id) nid
    from stadium a
) 
select id,to_char(visit_date,'YYYY-MM-DD') visit_date,people
from t a 
inner join (
    select isC,rid-nid fid from t group by rid-nid,isC having(count(0) > 2)
) b on a.isC=b.isC and a.rid-a.nid=b.fid
order by a.id

最后,题目里要求是 id 连续。。。。hmm,咱也没注意这个问题,懒得修改这个指令了。也就是说,第一次提交的指令,加上 order ,其实就是一拖三了。
在这里插入图片描述

602. 好友申请 II :谁有最多的好友

https://leetcode.cn/problems/friend-requests-ii-who-has-the-most-friends/

嗯,终于用到 union 了,就是基础的列转行,然后统计。

select id,num
from (
    select a.id,count(0) as num,row_number() over(order by count(0) desc) rid 
    from (
        select requester_id id
        from requestAccepted
        union all
        select accepter_id
        from requestAccepted
    ) a
    group by a.id
) a
where rid=1

607. 销售员

https://leetcode.cn/problems/sales-person/

嗯,完全没有供职过,用 not exists 完成。

select name 
from SalesPerson p
where not exists(
    select 1 from orders o
    inner join company c on o.com_id=c.com_id
    where o.Sales_Id=p.Sales_Id and c.name='RED'
)

608. 树节点

https://leetcode.cn/problems/tree-node/

考虑到不需要划分层级,所以不用 cte 辅助,再考虑到子查询相对较慢,也同样弃用了,直接用 join 结合条件判断输出节点类型就完事。

select distinct t1.id
    ,(case when t1.p_id is null then 'Root'
        when t2.id is null then 'Leaf'
        else 'Inner'
        end
    ) Type
from tree t1
left join tree t2 on t2.p_id=t1.id
order by t1.id

610. 判断三角形

https://leetcode.cn/problems/triangle-judgement/

嗯,x,y,z 都是已知的,求出最大边长,然后其他两边和大于最大长,就是符合的,子查询求出最大长,然后用计算列验证一下。

# mysql && mssql
select a.x,a.y,a.z,(case when a.x+a.y+a.z-a.mx > a.mx then 'Yes' else 'No' end) triangle 
from (
    select a.*,(select max(t.mx) from (select a.x as mx union all select a.y as mx union all select a.z as mx) t) as mx
    from triangle a
) a

oracle 不知道怎么搞子查询变成列,所以没能通过。想其他小伙伴咨询一下,后续题目需要用子查询完成的,到时候再解决吧。

小结

在数据库中,查询指令才是最最最基础,最最最常用的指令,没有之一。

而 t-sql 贯穿了整个查询的部分,虽然有函数、方法不太一致的情况,但这些并不需要在意,就和大家都说汉语,有的带点河南口音,有的带点东北方言,还有的夹杂着闽南土话,差不多就这么个情况而已。

对于查询来说,最重要的起始就是条件筛选的逻辑。根据题目仔细摆一下条件内容,基本上都能够直接得到结果。最多就是组合查询,或者放到子查询,再了不起,用关联查询,一般都能解决。

而现在,oracle 、 mysql、mssql 都支持了排名函数,虽然这个暂时可能还不是 t-sql 的内容,但出奇的,使用方法完全一致。基本可以确定 mysql 肯定是抄别人的,至于 oracle 和 mssql 谁抄谁的,老顾也不了解。反正微软和苹果抄视窗可视化的官司,也不是啥新闻。

在这里插入图片描述

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

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

相关文章

<数据结构>NO7.二叉树(附Oj练习题)

&#x1f447;二叉树的完整代码在&#x1f447; syseptember的gitee仓库&#xff1a;二叉树https://gitee.com/syseptember/data-structure/tree/1513789167062c75dc172366199ce7a6b0577cc7/BinaryTree2/BinaryTree2 目录 树的概念及结构 0x01.树的概念 0x02.树的相关概念 …

快速定位接口问题,JMeter方法论,跨线程组接口关联测试!

目录 【前言】 【步骤】 1. 准备工作 2. 创建线程组 3. 创建HTTP请求 4. 添加正则表达式提取器 5. 添加HTTP请求关联控制器 6. 设置断言和验证器 7. 运行测试 【代码】 【结论】 【前言】 在进行接口测试时&#xff0c;接口之间的关联经常是我们需要重点测试的点之…

如何手写网络协议栈

哈喽&#xff0c;我是子牙&#xff0c;一个很卷的硬核男人。喜欢研究底层&#xff0c;聚焦做那些大家想学没地方学的课程&#xff1a;手写操作系统、手写虚拟机、手写编程语言…目前做了两门课&#xff1a;手写OS、手写JVM 今天想跟大家聊一个黑科技&#xff1a;手写网络协议栈…

Python的编码规范

目录 1、每个 import 语句只导入一个模块&#xff0c;尽量避免一次导入多个模块&#xff0c; 2、不要在行尾添加分号&#xff0c;也不要用分号将两条命令放在同一行&#xff0c; 3、建议每行不超过 80 个字符&#xff0c; 4、使用必要的空行可以增加代码的可读性 5、通常情…

让百万大学生崩溃的在线OJ,如何破局?

目录 一、在线OJ的的原理 二、在线OJ的使用规则 三、注意事项 1.关于作弊 2.如何防止作弊 3.输入输出格式 4.换行问题 四、经典在线OJ坑人题目以及博主被坑经历 五、提交不成功及解决方法 六、如何得心应手的拿下OJ系统 七、在线OJ的骗分技巧 在线OJ&#xff08;Onl…

OpenGL简介

1.简介 一般它被认为是一个API&#xff0c;包含了一系列可以操作图形、图像的函数。然而&#xff0c;OpenGL本身并不是一个API&#xff0c;它仅仅是一个由Khronos组织制定并维护的规范(Specification)。OpenGL规范严格规定了每个函数该如何执行&#xff0c;以及它们的输出值。…

为何要用分布式锁Redis实现分布式锁

为何要用分布式锁 一、为什么要使用分布式锁 为了保证一个方法在高并发情况下的同一时间只能被同一个线程执行&#xff0c;在传统单体应用单机部署的情况下&#xff0c;可以使用Java并发处理相关的API(如ReentrantLcok或synchronized)进行互斥控制。但是&#xff0c;随着业务…

《论文阅读》连续前缀提示Prompt:table-to-text和摘要生成 ACL2021

《论文阅读》连续前缀提示Prompt:table-to-text和摘要生成 ACL2021 前言相关知识Table-to-Text Generation自编码语言模型自回归语言模型简介任务定义部分参数更新代码实验结果前言 你是否也对于理解论文存在困惑? 你是否也像我之前搜索论文解读,得到只是中文翻译的解读后…

高级算法工程师的工作职责(合集)

高级算法工程师的工作职责1 职责&#xff1a; 1、调研跟踪智能穿戴产品相关算法&#xff0c;为公司产品决策提供参考; 2、设计开发智能穿戴产品的计步、睡眠、心率、血氧饱和度、血压、心率变异性等相关参数的提取算法; 3、撰写算法开发文档&#xff0c;包括算法流程、测试方案…

小黑西安归来,政审完毕,眼睛手术做完一直在家躺着第5天的leetcode之旅:852. 山脉数组的峰顶索引

小黑代码 class Solution:def peakIndexInMountainArray(self, arr: List[int]) -> int:# 数组长度n len(arr)# 寻求山峰for i in range(n-1):if arr[i1] < arr[i]:return ireturn -1小黑二分模版 class Solution:def peakIndexInMountainArray(self, arr: List[int])…

Linux——内存和DMA

目录 本章目标&#xff1a; 一、内存组织 二、按页分配内存 三、slab分配器 四、不连续内存页分配 五、per-CPU变量 本章目标&#xff1a; 在前面的所有例子中&#xff0c;我们使用的都是全局变量或在栈上分配的内存。本章我们将先讨论如何动态分配内存和per-CPU变量。类…

实战-k8s中部署tomcat(四)

先下载资源&#xff1a;k8s中安装Tomcat 测试 k8s 集群中部署 tomcat 服务 #把 tomcat.tar.gz 上传到 k8s-node1&#xff0c;手动解压 [rootk8s-node1 ~]# ctr images import tomcat.tar.gz [rootk8s-master ~]# kubectl apply -f tomcat.yaml apiVersion: v1 #pod属于k8…

Augmentation Matters:一种简单而有效的半监督语义分割方法(CVPR2023)

文章目录 Augmentation Matters: A Simple-yet-Effective Approach to Semi-supervised Semantic Segmentation摘要本文方法Random Intensity-based AugmentationsAdaptive Label-aided CutMix 实验结果 Augmentation Matters: A Simple-yet-Effective Approach to Semi-superv…

迅为RK3568开发板2800页手册+220集视频

iTOP-3568开发板采用瑞芯微RK3568处理器&#xff0c;内部集成了四核64位Cortex-A55处理器。主频高达2.0Ghz&#xff0c;RK809动态调频。集成了双核心架构GPU&#xff0c;ARM G52 2EE、支持OpenGLES1.1/2.0/3.2OpenCL2.0、Vulkan 1.1、内高性能2D加速硬件。 内置NPU 内置独立NP…

港联证券|AI概念股继续活跃 科创50指数逆势走高

周三&#xff0c;A股市场出现极致分化态势。得益于存储芯片为代表的硬科技股的强势&#xff0c;科创50指数逆势走高。但创业板指、深证成指等主要股指仍然跌跌不休&#xff0c;沪指险守3200点关口。AI概念股继续逆势活跃&#xff0c;国资云、数据方向领涨&#xff0c;算力概念股…

坂田杨美自然村旧改,已立项,直接签约。

这个将由佳兆业与信义地产联合改造的坂田杨美自然村城市更新&#xff0c;已立项测绘&#xff0c;也公布了草案和村屋认定范围&#xff0c;正启动签约收楼中。名校附近的改造&#xff0c;深圳实验学校坂田校区附近&#xff0c;项目地处杨美地铁附近&#xff0c;还有佳兆业上品雅…

【企业化架构部署】Nginx网站服务

文章目录 一、Nginx 概述1.什么是 Nginx2.Nginx 的特点3.Nginx 应用场景 二、Nginx 服务基础1.编译安装 Nginx 服务1.1 布置环境1.2 安装依赖包1.3 创建运行用户、组1.4 编译安装 2.Nginx 的运行控制2.1 检查配置文件2.2 启动、停止 Nginx2.3 日志分割以及升级 Nginx 服务2.4 添…

39 KVM管理设备-管理快照

文章目录 39 KVM管理设备-管理快照39.1 概述39.2 操作步骤 39 KVM管理设备-管理快照 39.1 概述 虚拟机在使用过程中可能由于病毒对系统的破坏、系统文件被误删除或误格式化等原因造成虚拟机系统损坏导致系统无法启动。为了使损坏的系统快速恢复&#xff0c;openEuler提供了存…

每日学术速递5.30

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Accelerated Coordinate Encoding: Learning to Relocalize in Minutes using RGB and Poses(CVPR 2023 Highlight) 标题&#xff1a;加速坐标编码&#xff1a;学习使用 RGB 和姿势…

阿里邮箱POP3/SMTP服务

最近发现一个问题&#xff0c;小伙伴给我发的邮件&#xff0c;收和回都不及时。于是我现在将所有的邮箱&#xff0c;通过POP3/SMTP协议整合到了一起。再配合小米手环&#xff0c;就能做到邮件无遗漏。 一、邮箱常用协议 邮箱中常用三类协议 POP3 Post Office Protocol versi…