SQL
文章平均质量分 88
sql
F_D_Z
这个作者很懒,什么都没留下…
展开
-
【SQL】连续出现的数字
是 SQL 中用于过滤查询结果的一种条件语句,它允许从一个给定的值列表中选择匹配的行。例如,选择所有名称以“Mac”开头的产品,虽然这通常使用。例如,选择所有国家为“USA”、“India”和“China”的产品。当需要从一个列中选择具有特定值的行时,可以使用。即(id,num)中id+1,+2,num不变。单纯面向题目,三表连接或者子查询均可以实现。在 SQL 中,id 是该表的主键。1 是唯一连续出现至少三次的数字。找出所有至少连续出现三次的数字。返回的结果表中的数据可以按。id 是一个自增列。原创 2024-10-13 13:04:40 · 423 阅读 · 0 评论 -
【SQL】分数排名
窗口函数可以对查询结果集中的行进行分组、排序,并在每个分组内进行聚合、排名、计算等操作,而不会改变原始查询结果的行数或顺序。与常规的聚合函数(如SUM、AVG、COUNT等)不同,窗口函数允许在结果集中的每一行上进行计算,而不需要将数据分组。窗口函数提供了对每一行的子集(称为窗口)执行计算的能力,同时保留原始数据行的上下文信息。也就是说,如果有两行具有相同的值,它们将被赋予相同的排名,而下一行的排名将紧接着这两个相同的排名之后,不会跳过任何数字。在排名相同的分数后,排名数应该是下一个连续的整数。原创 2024-10-13 12:54:35 · 904 阅读 · 0 评论 -
【SQL】三角形判断
语句通常用于在存储过程、触发器或函数内执行条件逻辑。不同的数据库管理系统(DBMS)如MySQL、SQL Server、Oracle和PostgreSQL,它们在实现条件逻辑时可能略有不同。根据两边和大于另一边,通过and关系和if语句,如果满足条件则返回Yes, 不满足则返回No。在 SQL 中,(x, y, z)是该表的主键列。依据三个线段的长度,判断它们能否组成一个三角形。对每三个线段报告它们是否可以形成一个三角形。该表的每一行包含三个线段的长度。查询结果格式如下所示。原创 2024-10-12 15:31:53 · 610 阅读 · 0 评论 -
【SQL】MySQL数据表命令
这个命令通常在数据库管理系统(DBMS)的命令行界面(CLI)或者通过一些数据库管理工具(如 MySQL Workbench、phpMyAdmin 等)中使用。命令时,它会显示指定表的列名、数据类型、是否允许 NULL 值、键信息、默认值以及其他额外信息(这些信息可能会根据数据库系统的不同而有所差异)。表,这个命令会展示创建这个表时所使用的完整 SQL 语句,包括表的定义、列的数据类型、索引、约束等信息。语句用于显示创建指定表的 SQL 语句。的缩写,用于获取关于数据库表中列的信息。原创 2024-10-11 16:18:39 · 254 阅读 · 0 评论 -
【SQL】温度比较
返回结果:2.5(表示从2023-01-01 12:00:00到2023-01-01 14:30:00之间有2.5小时的差异)返回结果:28(表示从2023-03-01到2023-04-01之间有28天的差异)。返回结果:2(表示从2023-01-01到2023-03-01之间有2个月的差异)编写解决方案,找出与之前(昨天的)日期相比温度更高的所有日期的。2015-01-04 的温度比前一天高(20 -> 30)找出与之前(昨天的)日期相比温度更高的所有日期的 id。与之前(昨天的)日期相比。原创 2024-10-11 16:10:59 · 728 阅读 · 0 评论 -
【SQL】收入更高的员工
这些条件通常使用布尔表达式来表示,布尔表达式可以使用布尔运算符(如AND、OR、NOT)、比较运算符(如=、>、<等)以及更高级的功能(如子查询、IN/NOT IN、LIKE和BETWEEN)来构建。对于大型数据库表,使用适当的索引可以显著提高WHERE子句的性能。两个表之间笛卡尔积(Cartesian product)的形式,用了逗号分隔的连接(comma-separated join),这是早期SQL语法中用于连接表的一种方式,也可以使用显式的。该表的每一行都表示雇员的ID、姓名、工资和经理的ID。原创 2024-10-10 15:20:52 · 721 阅读 · 0 评论 -
【SQL】换座位
不同的DBMS可能在实现IF语句和CASE语句时有所差异,因此在使用之前应该查阅相应DBMS的文档。在使用IF语句或CASE语句时,应该确保条件逻辑是清晰和正确的,以避免产生意外的结果。在存储过程或函数中,IF语句通常用于控制流程,而在普通的SQL查询中,CASE语句或IF函数通常用于根据条件返回不同的值。然而,需要注意的是,不同的SQL数据库管理系统(DBMS)可能在实现IF语句时有所差异。如果学生的数量是奇数,则最后一个学生的id不交换。如果学生的数量是奇数,则最后一个学生的id不交换。原创 2024-10-09 21:40:39 · 958 阅读 · 0 评论 -
【SQL】超过五名学生的课程
GROUP BY 是 SQL 语言中的一个子句,用于将结果集中的行分组,并对每个组应用聚合函数(如 COUNT、SUM、AVG、MAX、MIN 等)。HAVING子句的条件可以使用各种操作符,包括比较运算符(如=、、>、=5,该表的每一行表示学生的名字和他们注册的班级。原创 2024-10-09 20:48:32 · 1024 阅读 · 0 评论 -
【SQL】Windows MySQL 服务查询&启动&停止&自启动(保姆级)
MySQL是一种开放源代码的轻量级关系型数据库管理系统,使用最常用的结构化查询语言(SQL)对数据库进行管理。由于MySQL具有体积小、速度快、成本低、开放源码等优点,现已被广泛应用于互联网上的中小型网站中,并且大型网站也开始使用MySQL数据库,如网易、新浪等。原创 2024-10-07 09:18:44 · 1438 阅读 · 0 评论 -
【SQL】仅出现一次的最大数据
子查询(Sub Query)本质上是一个完整的SELECT语句,它可以嵌套在另一个SELECT语句、INSERT语句、UPDATE语句或DELETE语句中。子查询的输出可以包括一个单独的值(单行子查询)、几行值(多行子查询)或多列数据(多列子查询)。MAX 语句是一种常用于数据库查询、编程语言以及数据分析中的函数,用于返回一组值中的最大值,可以结合 GROUP BY 子句使用 MAX 函数,以获取每个组的最大值。因此,如果MyNumbers表中的所有num值都不是唯一的,这个查询将返回NULL。原创 2024-10-02 23:25:32 · 984 阅读 · 1 评论 -
【SQL】有至少五名直接下属的经理
经理和下属均具有独立id,经理的managerId为null,下属的managerId为对应经理id。该表的每一行表示雇员的名字、他们的部门和他们的经理的id。没有员工会成为自己的管理者。,你可以根据两个表中的某些列之间的匹配关系,获取这些表的组合结果集。是一种用于结合来自两个或多个表的数据的 SQL 操作。该表的每一行表示雇员的名字、他们的部门和他们的经理的id。需要计数,按照经理的id分组 group by e1.id。id 是此表的主键(具有唯一值的列)。找出至少有五个直接下属的经理。原创 2024-10-01 17:14:22 · 1291 阅读 · 0 评论 -
【SQL】大的国家
如果一个国家满足下述两个条件之一,则认为该国是 大国 : 面积至少为 300 万平方公里(即3000000 km2),或者 人口至少为 2500 万(即 25000000)语句在SQL(Structured Query Language,结构化查询语言)中扮演着至关重要的角色,它主要用于过滤数据,确保只检索、更新或删除满足特定条件的记录。语句需要精确构建条件表达式,以避免误操作数据,在处理大数据集时,合理利用索引能显著提升查询性能。这张表的每一行提供:国家名称、所属大陆、面积、人口和 GDP 值。原创 2024-10-01 16:08:50 · 1055 阅读 · 0 评论 -
【SQL】每个部门工资最高的员工
子查询(Subquery)是一种强大的特性,允许在另一个查询中嵌套一个或多个SQL查询。子查询的结果可以作为另一个查询的条件、值或表来使用,从而实现复杂的查询逻辑。Max 和 Jim 在 IT 部门的工资都是最高的,Henry 在销售部的工资最高。此表的每一行都表示员工的 id、姓名和工资。| 列名 | 类型 |此表的每一行都表示一个部门的 id 及其名称。查找每个部门中薪资最高的员工,首先需要分组。在 SQL 中,id 是此表的主键列。在 SQL 中,id是此表的主键。原创 2024-09-29 17:56:12 · 759 阅读 · 0 评论 -
【SQL】重复的邮箱信息
语句主要用于结合聚合函数(如 COUNT(), MAX(), MIN(), SUM(), AVG() 等)来将结果集中的多行数据组合成更小的分组,以便对每个分组执行计算。这样做的好处是可以对数据进行汇总分析,比如计算每个部门的员工数量、每个产品的销售总额等。操作中,所有具有相同值的行会被分在同一组中,包括 NULL 值。首先需要按照Email进行分组,后通过统计Email数量的形式,多于一次即意味着重复,group by Email。函数可以应用于任何类型的列,但实际上,在大多数情况下,它用于计算非空(原创 2024-09-29 14:54:34 · 1020 阅读 · 0 评论 -
【SQL】未订购的客户
(或称为左外连接)是SQL中的一种连接类型,它用于从两个或多个表中基于连接条件返回左表(LEFT JOIN语句左侧的表)的所有记录,以及右表中满足连接条件的记录。基于共同的客户 ID(在 customers 表中的 id 列和 orders 表中的 customerId 列),将表 customers 与表 orders 进行连接。子句是一个非常重要的组成部分,它用于指定筛选数据的条件,从而限制查询结果集仅包含满足条件的行。该表的每一行都表示订单的 ID 和订购该订单的客户的 ID。原创 2024-09-28 18:24:01 · 828 阅读 · 0 评论 -
【SQL】筛选字符串与正则表达式
请注意,你可以在方括号内指定的字符范围的数量没有限制,您可以添加想要匹配的其他字符或范围。\.:表示句点字符。请注意,字符 ^ 用来否定字符范围,它在方括号内的含义与它的方括号外表示开始的含义不同。[a-z]*:表示一个字符范围,匹配从 a 到 z 的任何字符 0 次或多次。[a-z]+:表示一个字符范围,匹配从 a 到 z 的任何字符 1 次或多次。,所以^[a-zA-Z]+[a-zA-Z0-9_.-]*,这里面包含小写字。[a-z]:表示一个字符范围,匹配从 a 到 z 的任何字符。原创 2024-09-26 16:37:30 · 1058 阅读 · 0 评论 -
【SQL】指定时间段的下单产品
where 子句用于对查询的数据进行筛选,使用 order_date >= '2020-02-01' and order_date < '2020-03-01' 条件来确定订单发生时间在 2020 年 2 月份。随后使用having子句限制条件为不少于100的产品,注意having子句用于对分组后的数据进行过滤,需要在group by 之后,只有当 unit 汇总结果大于等于 100 时,当前分组的数据才被保留。2020 年 2 月份下单 product_id = 2 的产品的数目总和为 80。原创 2024-09-26 14:31:42 · 1145 阅读 · 0 评论 -
【SQL】产品分组销售
是 SQL 中的一个聚合函数,主要用于将分组后的多个行的值连接成一个字符串。对于2020-05-30,出售的物品是 (Headphone, Basketball, T-shirt),按词典序排列,并用逗号 ',' 分隔。子句,但这可能会导致每次查询时返回的行顺序不同,因为数据库管理系统DBMS不保证未指定排序的查询结果的顺序。首先按照第一个列排序,然后在该列的值相同的情况下,按照第二个列排序,依此类推。对于2020-06-01,出售的物品是 (Pencil, Bible),按词典序排列,并用逗号分隔。原创 2024-09-25 16:11:59 · 893 阅读 · 0 评论 -
【SQL】跳过记录筛选第二名
当从数据库表中查询数据时,如果表中某列包含重复的值,而又只想获取这些值的唯一列表,那么就可以使用。,那么 SQL 会返回这些列组合起来的唯一值。子句通常一起使用来限制查询结果的数量,并指定从哪里开始获取这些结果。这通常用于获取查询结果的第二行数据(假设结果集是按某种顺序排列的,比如按主键或某个特定的列排序)。可以考虑使用 ifNull(查询,null)方法,或者通过外层再加一层查询,使其作为临时表。在某些数据库系统中(如SQL Server),可能需要使用不同的语法来实现分页,比如。id 是这个表的主键。原创 2024-09-03 10:17:02 · 1059 阅读 · 0 评论 -
【SQL】Delete使用
子查询(Sub Query)或称为内查询(Inner Query)、嵌套查询(Nested Query),是SQL语言中一种常用的程序模块,用于在一个查询语句中嵌套另一个查询语句。当一个查询的结果是另一个查询的条件时,这个查询就被称为子查询。子句可以包含各种条件,这些条件可以基于一个或多个列的值。可以直接作笛卡尔积,比较id大小和电子邮箱,删除所有id较大且相同的电子邮箱。id 是该表的主键列(具有唯一值的列)。通过子查询查找id最小的电子邮箱,同样的思路,也可以通过子查询实现。运行脚本后,显示的答案是。原创 2024-09-02 11:55:00 · 1077 阅读 · 0 评论 -
【SQL】特定字符串检索
在某些数据库系统中,如果xxx列包含NULL值,并且试图使用LIKE来搜索这些值,那么这些NULL值将不会被匹配,因为NULL表示“未知”或“无值”,而不是空字符串或任何特定的文本值。在SQL中,要实现检索特定字符串也可以通过regexp,这是一个强大的字符串匹配函数,它使用正则表达式(Regular Expressions)来搜索和匹配字符串模式。这里的xxx是表中的一个列名,而like后面跟着的是要匹配的模式,模式中可以包含通配符来代表任意数量的字符。这个表包含医院中患者的信息。原创 2024-09-01 19:34:55 · 693 阅读 · 0 评论 -
【SQL】统一字符格式
其他字符即第一个字符以后的所有字符,通过substring(name,2)选取第二个字符及其之后的字符,通过lower使得它们变为小写形式,lower(substring(name,2))字符分开处理后通过concat进行拼接,concat(upper(substring(name,1,1)), lower(substring(name,2)))通过substring(name,1,1)选取第一个字符,然后通过upper使得其为大写,upper(substring(name,1,1))原创 2024-09-01 14:44:16 · 1379 阅读 · 0 评论 -
【SQL】窗口函数的妙用
通过窗口函数按照tiv2015分别计数,要求计数大于1即可实现,count(*) over(partition by tiv_2015) b。其 tiv_2015 与其他投保人不同,并且位置与第三条记录相同,这也导致了第三条记录不符合题目要求。tiv_2015 是该投保人在 2015 年的总投保金额,tiv_2016 是该投保人在 2016 年的总投保金额。因此,结果是第一条记录和最后一条记录的 tiv_2016 之和,即 45。tiv_2015 值为 10 与第三条和第四条记录相同,且其位置是唯一的。原创 2024-08-31 13:15:02 · 1014 阅读 · 0 评论 -
【SQL】好友申请
需要查找拥有最多好友数目的人和具体数目,而一条申请记录代表两人均增加一位好友,故可以将申请好友者列连接接受好友者列,以id为组,统计好友数目。这可以避免一些繁琐情况。(requester_id, accepter_id) 是这张表的主键(具有唯一值的列的组合)。编号为 3 的人是编号为 1 ,2 和 4 的人的好友,所以他总共有 3 个好友,比其他人都多。这张表包含发送好友请求的人的 ID ,接收好友请求的人的 ID ,以及好友请求通过的日期。编写解决方案,找出拥有最多的好友的人和他拥有的好友数目。原创 2024-08-30 14:22:55 · 577 阅读 · 0 评论 -
【SQL】餐馆营业额七日均线数据
第一个七天消费平均值从 2019-01-01 到 2019-01-07 是restaurant-growth/restaurant-growth/ (100 + 110 + 120 + 130 + 110 + 140 + 150)/7 = 122.86。第四个七天消费平均值从 2019-01-04 到 2019-01-10 是 (130 + 110 + 140 + 150 + 80 + 110 + 130 + 150)/7 = 142.86。该表包含一家餐馆的顾客交易数据。返回结果格式的例子如下。原创 2024-08-29 11:16:21 · 1309 阅读 · 0 评论 -
【SQL】电影评分
通过where限制时间为2020年2月,where created_at>='2020-02-01' and created_at<'2020-03-01'Frozen 2 和 Joker 在 2 月的评分都是 3.5,但是 Frozen 2 的字典序比较小。(movie_id, user_id) 是这个表的主键(具有唯一值的列的组合)。,即按字母在字典中出现顺序对字符串排序,字典序较小则意味着排序靠前。movie_id 是这个表的主键(具有唯一值的列)。user_id 是表的主键(具有唯一值的列)。原创 2024-08-28 14:14:45 · 625 阅读 · 0 评论 -
【SQL】筛选上级经理离职的员工
2.离职经理的id在employ_id删除了,但是在manager_id中没有删除。Joziah 的上级经理是 6 号员工,他已经离职,因为员工表里面已经没有 6 号员工的信息了,它被删除了。并且他们的上级经理已离职。当一个经理离开公司时,他们的信息需要从员工表中删除掉,但是表中的员工的。Kalel 的上级经理是 11 号员工,他还在公司上班(他是 Joziah )。上级经理已离职的情况,即not in在职,考虑子查询,这个表包含了员工,他们的薪水和上级经理的id。查找这些员工的id,他们的薪水严格少于。原创 2024-08-27 10:44:52 · 886 阅读 · 0 评论 -
【SQL】分类统计的薪水
与Low Salary同理,select 'High Salary' category, ifnull(sum(if(income>50000,1,0)),0) accounts_count。严格低于,income<20000,通过sum,if结合计数,不必case when,sum(if(income<20000,1,0))考虑若类别中没有账户,即没有数据中没有账户满足Low Salary的条件,会报null,通过ifnull使其报告0。在 SQL 中,account_id 是这个表的主键。原创 2024-08-27 09:28:45 · 652 阅读 · 0 评论 -
【SQL】窗口函数sum() over ( partition by xx order by xx)
可以发现, 结合 partition by 和 order by 使用窗口函数后,意味着分组按行,对每一行之前的数据进行聚合计算,这种计算适合用于统计一些累加的数据分析,如。可以发现,窗口函数仅使用Partition by,类似于使用 group by 之后,对每一个分组进行一次 sum 计算,只是同一个分组下每一行都计算了相同的一次。结合 partition by 和 order by 使用窗口函数。窗口函数可分为专用窗口函数和作为窗口函数使用的聚合函数。仅按照partition by开窗。原创 2024-08-25 14:14:50 · 821 阅读 · 0 评论 -
【SQL】最后一个能上车的人
上巴士且不超过重量限制的乘客,并报告。原创 2024-08-25 13:30:37 · 608 阅读 · 0 评论 -
【SQL】指定日期的产品价格
通过ifnull,若为null,则价格为10,ifnull(b.new_price,10)(product_id, change_date) 是此表的主键(具有唯一值的列组合)。关键点在找到 2019-08-16 前所有有改动的产品及其最新价格和没有修改过价格的产品。即针对一种产品,找到其在2019-08-16 前的最新价格,也就是最新日期的价格。这张表的每一行分别记录了 某产品 在某个日期 更改后 的新价格。时全部产品的价格,假设所有产品在修改前的价格都是。编写一个解决方案,找出在。结果格式如下例所示。原创 2024-08-24 12:02:16 · 781 阅读 · 0 评论 -
【SQL】关注者数量
(user_id, follower_id) 是这个表的主键(具有唯一值的列的组合)。count计数,count(follower_id) followers_count。该表包含一个关注关系中关注者和用户的编号,其中关注者关注用户。使用order by升序排列order by user_id。编写解决方案,对于每一个用户,返回该用户的关注者数量。按照用户id分组,group by user_id。查询结果的格式如下示例所示。2 的关注者有 {0,1}0 的关注者有 {1}1 的关注者有 {0}原创 2024-08-23 11:09:50 · 691 阅读 · 0 评论 -
【SQL】直属部门
primary_flag 是一个枚举类型,值分别为('Y', 'N'). 如果值为'Y',表示该部门是员工的直属部门。的时候,他需要决定哪个部门是他的直属部门。请注意,当员工只加入一个部门的时候,那这个部门将默认为他的直属部门,虽然表记录的值为。通过primary_flag决定多个部门中的直属部门,采用where,where primary_flag = 'Y'当只加入一个部门时,primary_flag = 'N'但是这个是直属部门,与前一种情况为or关系。- 员工 1 的直属部门是 1。原创 2024-08-22 11:20:01 · 744 阅读 · 0 评论 -
【SQL】下属员工数量
Hercy 有两个需要向他汇报的员工, 他们是 Alice and Bob. 他们的平均年龄是 (41+36)/2 = 38.5, 四舍五入的结果是 39.编写一个解决方案来返回需要听取汇报的所有经理的 ID、名称、直接向该经理汇报的员工人数,以及这些员工的平均年龄,其中该平均年龄需要四舍五入到最接近的整数。该表包含员工以及需要听取他们汇报的上级经理的 ID 的信息。意思为Employees表格中有的id是员工,有的id是经理,员工需要向一个经理汇报,经理不需要。返回的结果集需要按照。原创 2024-08-21 11:30:56 · 916 阅读 · 0 评论 -
【SQL】买下所有产品的顾客
一个用户可能买下多个产品,having count(distinct product_key) = (select count(*) from Product )报告购买所有种类产品的客户的id,种类数量通过Product表查询,select count(*) from Product。product_key 是 Product 表的外键(reference 列)。购买了所有产品(5 和 6)的客户的 id 是 1 和 3。product_key 是这张表的主键(具有唯一值的列)。该表可能包含重复的行。原创 2024-08-21 10:23:21 · 902 阅读 · 0 评论 -
【SQL】商品销售
在执行natural join时,SQL 会自动查找两个表中名称相同的列,并使用这些列作为连接条件。报告产品,同一产品可能在销售表中有不同销售情况,组合起来,group by product_id。id 为 2 的产品在 2019 年春季销售,但也在 2019 年春季之后销售。我们只返回 id 为 1 的产品,因为它是 2019 年春季才销售的产品。product_id 是该表的主键(具有唯一值的列)。id 为 3 的产品在 2019 年春季之后销售。id 为 1 的产品仅在 2019 年春季销售。原创 2024-08-19 10:32:02 · 1086 阅读 · 0 评论 -
【SQL】30天活跃用户数
简化计算量,通过date_add计算起始时间点再between and 截止时间,这样不用逐一遍历所有时间,activity_date between date_add("2019--07-27",interval -29 day) and "2019-07-27"activity_type 列是 ENUM(category) 类型, 从 ('open_session', 'end_session', 'scroll_down', 'send_message') 取值。(包含2019-07-27),近。原创 2024-08-18 10:59:07 · 1162 阅读 · 0 评论 -
【SQL】科目种类
该表中的每一行都表示带有 teacher_id 的教师在系 dept_id 中教授科目 subject_id。通过count计算科目种类的数量,count(distinct subject_id) cnt。在 SQL 中,(subject_id, dept_id) 是该表的主键。有subject_id和dept_id,分别指科目和院系。- 他在 3、4 系教科目 2。- 他在 3 系教科目 3。- 他在 1 系教科目 1。- 他在 1 系教科目 2。- 他在 1 系教科目 3。- 他在 1 系教科目 4。原创 2024-08-17 13:28:03 · 733 阅读 · 0 评论 -
【SQL】连续登录
这里先获取首次登录日期增加一天的日期,date_add(min(event_date), interval 1 day)换句话说,你需要计算从首次登录日期开始至少连续两天登录的玩家的数量,然后除以玩家总数。(player_id,event_date)是此表的主键(具有唯一值的列的组合)。然后通过where in将增加一天的日期与表中登录日期比对,获取存在的第二天的日期。编写解决方案,报告在首次登录的第二天再次登录的玩家的。几个keywords,首次登录,翌日再次登录,玩家比率。原创 2024-08-17 10:37:23 · 1029 阅读 · 0 评论 -
【SQL】即时订单 II
通过sum,if的组合,计算即时订单数量 sum(if(order_date = customer_pref_delivery_date, 1, 0))该表保存着顾客的食物配送信息,顾客在某个日期下了订单,并指定了一个期望的配送日期(和下单日期相同或者在那之后)。1 号顾客的 1 号订单是首次订单,并且是计划订单。2 号顾客的 2 号订单是首次订单,并且是即时订单。3 号顾客的 5 号订单是首次订单,并且是计划订单。4 号顾客的 7 号订单是首次订单,并且是即时订单。因此,一半顾客的首次订单是即时的。原创 2024-08-16 11:06:18 · 748 阅读 · 0 评论