leetcode 数据库题 175~185

news2024/11/19 14:34:51

leetcode 数据库题

  • 175. 组合两个表
  • 176. 第二高的薪水
  • 177. 第N高的薪水
  • 178. 分数排名
  • 180. 连续出现的数字
  • 181. 超过经理收入的员工
  • 182. 查找重复的电子邮箱
  • 183. 从不订购的客户
  • 184. 部门工资最高的员工
  • 185. 部门工资前三高的所有员工
  • 小结

嗯。。。数据库题目就不贴原题内容了,表结构贴过来也不好看。

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

175. 组合两个表

题目地址:https://leetcode.cn/problems/combine-two-tables/submissions/

简单来说,就是考察 join 的使用,简单题目。同时,需要指定列集合,应该没有小伙伴不会吧。leetcode 支持的三种 sql 都可以用一个指令完成操作。

select firstName,lastName,city,state 
from person a 
left join address b on a.personid=b.personid

在这里插入图片描述

176. 第二高的薪水

题目地址:https://leetcode.cn/problems/second-highest-salary/

嗯,这题有个小坑,当没有数据的时候,其实应该输出一个 null,所以。。。。

还有就是。。。第二高,所以不能用row_number,要用 dense_rank

select (
    select salary 
    from (
        select distinct salary,dense_rank() over(order by salary desc) rid 
        from employee
    ) a
    where rid=2
) SecondHighestSalary 

oracle 不熟,不知道为什么这个指令不能运行
在这里插入图片描述

177. 第N高的薪水

题目地址:https://leetcode.cn/problems/nth-highest-salary/

额。。。和刚才的题目几乎一模一样啊,把2改成变量 @n 就好

mysql
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN (
      # Write your MySQL query statement below.
    select distinct salary 
    from (
        select salary,dense_rank() over(order by salary desc) rid 
        from employee
    ) a
    where rid=N      
  );
END

sqlserver
CREATE FUNCTION getNthHighestSalary(@N INT) RETURNS INT AS
BEGIN
    RETURN (
        /* Write your T-SQL query statement below. */
        select distinct salary 
        from (
            select salary,dense_rank() over(order by salary desc) rid 
            from employee
        ) a
        where rid=@N
    );
END

当然,mysql 这个题目还是有优势的,用 limit 更效率一些

178. 分数排名

题目地址:https://leetcode.cn/problems/rank-scores/

嗯,标准的考 dense_rank 的用法的题目。

mssql
select score,dense_rank() over(order by score desc) as rank from scores
mysql
select score,dense_rank() over(order by score desc) 'rank' from scores;

mysql 需要注意列名需要加修饰即可

180. 连续出现的数字

题目地址:https://leetcode.cn/problems/consecutive-numbers/

嗯,多次 row_number 组合即可,最后记得排重

select distinct num ConsecutiveNums 
from (
    select *
        ,row_number() over(order by id) rid 
        ,row_number() over(partition by num order by id) nid
    from logs
) a
group by rid - nid,num
having(count(0) > 2)

在这里插入图片描述

181. 超过经理收入的员工

题目地址:https://leetcode.cn/problems/employees-earning-more-than-their-managers/

考察一下自关联,inner join 即可,指令一拖三没问题。

select a.name Employee 
from employee a 
inner join employee b on a.managerid=b.id
where a.salary > b.salary

在这里插入图片描述

182. 查找重复的电子邮箱

题目地址:https://leetcode.cn/problems/duplicate-emails/

又是一个基础题目,考察 group 时 having 的使用

select email from person group by email having(count(0)>1)

在这里插入图片描述

183. 从不订购的客户

题目地址:https://leetcode.cn/problems/customers-who-never-order/

看题目的意思,用个 not exists 就好

select name Customers 
from customers a
where not exists(select 1 from orders where customerid=a.id)

在这里插入图片描述

184. 部门工资最高的员工

题目地址:https://leetcode.cn/problems/department-highest-salary/

很明显,row_number 结合 partition 最方便。然后看了看示例,有重复数据,那就换 rank就好。

select b.name department,a.name employee,salary 
from (
    select *,rank() over(partition by departmentid order by salary desc) rid 
    from employee
) a
left join department b on a.departmentid=b.id
where rid=1

在这里插入图片描述
oracle 的开窗函数也许有细节的不同,回头再研究。

185. 部门工资前三高的所有员工

题目地址:https://leetcode.cn/problems/department-top-three-salaries/

其实和前一个题目没什么区别,rank 换成 dense_rank?然后 rid=1 变成 rid<4?

select b.name department,a.name employee,salary 
from (
    select *,dense_rank() over(partition by departmentid order by salary desc) rid 
    from employee
) a
left join department b on a.departmentid=b.id
where rid<4

在这里插入图片描述
说起来,排名函数,sqlserver 从 2005 版本就已经支持起来了,mysql 支持的倒是比较晚,mysql 8 才支持,2016年才出的。也许这些题目考的不是排名函数?

试着不用排名函数做一版出来。

select c.name department,b.name employee,a.salary 
from (
    select distinct departmentid,salary 
    from employee a
    where (
        select count(0)
        from (
            select distinct salary
            from employee 
            where departmentid=a.departmentid and salary > a.salary
        ) x
    ) < 3
) a
left join employee b on a.departmentid=b.departmentid and a.salary=b.salary
left join department c on a.departmentid=c.id

小结

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

嗯,后边的数据库题,题号不连续了,估计算法题也会出现不连续的情况了。。。今天就先刷到这里。

总的来说,这些数据库题目都不是难题,一些基础的查询指令熟练的话,基本都能很快的做出来。

而因为 leetcode 的 mysql 版本,已经是 8 了,所以很多新特性是可以使用的,比如 cte 之类的。当然,仅仅是在有必要的情况下取用哦。

对于 select 的基础查询,各个教程,各个官方文档里都有相吸说明,老顾就不再重复了。一定要看官方的文档最优先哦。

至于算法题。。。。老顾是卡在树那里了,毕竟老顾自己工作中,完全没有接触过树和图的算法。。。。还在补课中。。。被自己蠢死了。。。。

在这里插入图片描述

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

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

相关文章

00后是真卷不过,工作没两年,跳槽到我们公司起薪20K都快接近我了

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&…

cocosCreator自动化打包工具

前言&#xff1a; 使用nodeJs脚本化Cocos Creator自动化构建、编译。 版本&#xff1a;cocosCreator2.4.5。 简述&#xff1a;使用自动化构建-编译工具前提&#xff0c;你终端上配置了相关的环境&#xff0c;比如JDK、NDK、SDK&#xff08;对于原生平台&#xff09;&#xff0c…

Express实战个人订阅号实现网站登录

今天我们来实现一个使用个人订阅号实现网站的功能&#xff0c;后端使用的是 express 。其它框架原理基本一致&#xff0c;只是定义路由或返回响应数据部分代码跟 express 有所出入。先来一波效果图&#xff1a; 1. 前言 20 年 3 月在掘金写过一篇文章&#xff0c;介绍了使用 e…

使用cmake 构建构建新项目的时候,编译提示库找不到怎么办?

昨天帮其他部门同事解决Linux下Qt编译找不到Qt 依赖库 core的问题。过程很有特征性&#xff0c;可以推广到Linux下使用cmake构建项目时找不到库文件的广泛性问题。 先上图&#xff0c;结合事情经过讲述&#xff1a; 事情经过&#xff1a; 这里给大家介绍第一个重点&#xff1…

秘塔写作猫

秘塔写作猫是集AI智能写作、多人协作、改写润色、文本校对等功能为一体的AI原生创作平台&#xff0c;可以帮助不同群体大幅提升写作效率和生产力。 接下来小编就带大家了解一下该软件具体的一些功能&#xff0c;不论你是学生、上班族还是自媒体从业者等&#xff0c;该工具绝对可…

箭头函数与普通的函数有什么区别-M

箭头函数与普通的函数有什么区别 1、写法不同 在 js 中&#xff0c;像命名式函数、函数表达式都称为普通函数。对于普通函数&#xff0c;需要用function关键字来声明。而箭头函数则不需要使用function关键字&#xff0c;在箭头前面的括号里面写参数&#xff0c;后面的大括号里…

Linux 安装MySQL-5.7.30

1.官网下载MySQL 进入官网https://www.mysql.com/ 从下载页面下载社区版本其中社区版本免费&#xff0c;免费的午餐不提供技术支持. 页面中MySQL Enterprise Edition是企业版&#xff0c;企业版收费但是会提供技术支持&#xff0c; 点击图中红框下载社区版本 选择Download Arc…

AC,AP以及三阶段项目

特点&#xff1a;access&#xff1a;连接终端设备 只能通过1个vlan trunk&#xff1a;交换机与交换机相连 可以通过多个vlan 共同特点&#xff1a;交换机的端口收发数据的规则&#xff1a; 收&#xff1a;如果收到的数据&#xff0c;没有携带任何标签&#xff0c;则使用该端口…

01SpringCloudRibbon负载均衡

Ribbon负载均衡 Ribbon Eureka帮我们集成了负载均衡组件&#xff1a;Ribbon&#xff0c;简单修改代码即可使用。 什么是Ribbon&#xff1a;客户端负载均衡组件 开启负载均衡 1、Eureka中已经集成了Ribbon&#xff0c;所以我们无需引入新的依赖&#xff0c;直接修改代码。 2、…

Redis的主从集群搭建与配置

文章目录 Redis主从集群模式搭建过程分级管理容灾冷处理 Redis主从集群模式 Redis的集群模式 主从复制模式&#xff1a;利用主从复制原理&#xff0c;一主多从架构。读写分离&#xff0c;主节点可读可写&#xff0c;从节点只能提供读服务。哨兵模式&#xff1a;哨兵实现了自动化…

Vue 3 + Element Plus 简单用法

Element Plus&#xff1a; A Desktop UI toolkit for Vue.js 即 Vue 桌面 UI 工具包 基于 Vue 2 的组件库和基于 Vue 3 的组件库安装方法不同&#xff0c;基于 Vue 3 的组件库叫做 Element Plus。 MDBootstrap 与 Element UI 区别&#xff1a; MD Bootstrap vs ElementUI: W…

如何在金融企业推进故障演练?中国人寿分阶段实践总结

一分钟精华速览 越来越多企业正在通过故障注入和演练的方式提升系统可靠性&#xff0c;这其中金融行业的应用较为特殊。一方面其可靠性要求比非涉账类系统更高&#xff1b;另一方面金融行业有更加严格的监管要求&#xff0c;如客户、账目等信息都有严格约束。加之金融系统较其…

ActiveMQ基础学习简单记录

ActiveMQ基础学习简单记录 JMS是什么JMS消息模型JMS Message Type Activemq安装概念强化JMS的跨平台性JMS通用接口JMS希望达到的目标是什么 Activemq发送消息的三种模式至少一次至多一次精确一次可重复确认模式小结 Activemq支持众多协议Activemq支持的定时消息,延迟消息,优先级…

【C++技能树】类和对象的使用 --初始化列表,static,友元,内部类,匿名对象的理解与使用

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我bua&#xff01; 类和对象的使用 0. 初始化列表explicit关键字 1.Static静态成员变量2.友元2.1.友元函数2.2.友元类 3.内部类4.匿名对象4.匿名对象至此初始化列表,static…

【Linux】2. Shell运行原理与Linux权限操作

专栏导读 &#x1f341;作者简介&#xff1a;余悸&#xff0c;在读本科生一枚&#xff0c;致力于 C方向学习。 &#x1f341;收录于 C 专栏&#xff0c;本专栏主要内容为 C 初阶、 C 进阶、 STL 详解等&#xff0c;持续更新中&#xff01; &#x1f341;相关专栏推荐&#xff1…

Cloud Studio 有“新”分享

GitHub仓库推荐 Awesome Open Source Applications - 收集了各种开源应用程序&#xff0c;包括 Web 应用、桌面应用、移动应用等。Cloud Studio 一键运行 Free for Dev - 收集了各种免费的开源应用程序和工具&#xff0c;包括 Web 应用、桌面应用、移动应用等。Cloud Studio 一…

kaggle经典赛 | IEEE欺诈检测竞赛金牌方案分享

https://www.kaggle.com/competitions/ieee-fraud-detection 赛题背景 想象一下&#xff0c;站在杂货店的收银台&#xff0c;身后排着长队&#xff0c;收银员不那么安静地宣布你的卡被拒绝了。在这一刻&#xff0c;你可能没有考虑决定你命运的数据科学。 尴尬&#xff0c;并…

一文搞定验证码(上部分)

1.背景 目前收到反馈,存在一类用户,在利用会员权益大量进行二次销售;而且还是自动进行操作的. 那么意味着他们有一个自动平台在对我们的商品进行二次销售. 这是就该我们的主角登场了. 验证码模块可以有效防止机器人刷接口 2.开源验证码框架 通过在网上查找资料, 发现了几个验…

C++:采用哈希表封装unordered_map和unordered_set

目录 一. 如何使用一张哈希表封装unordered_map和unordered_set 二. 哈希表迭代器的实现 2.1 迭代器成员变量及应当实现的功能 2.2 operator函数 2.3 operator*和operator->函数 2.4 operator!和operator函数 2.5 begin()和end() 2.6哈希表迭代器实现代码 三. unord…

渗透测试--6.2.mdk3攻击wifi

前言 本次依然使用Kali虚拟机系统&#xff0c;win11主机&#xff0c;网卡Ralink 802.11 配合mdk3进行wifi伪造、连接设备查看、解除认证攻击。本次实验只用于学习交流&#xff0c;攻击目标为自家的手机热点&#xff0c;请勿违法使用&#xff01; 目录 前言 1.Deauth攻击原…