
SQL
文章平均质量分 64
学习基本的sql语句,通过题目来训练sql语句
Joyner2018
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1393. 股票的资本损益
根据买入卖出时间顺序给交易编号;利用 SQL 窗口函数或 Pandas 分组排名实现交易配对;计算资本利得/损失。这不仅是典型的时间序列数据处理问题,也是在金融数据分析、报表生成中非常实用的技能。掌握这些思路和技术,可以帮助你高效处理多种复杂的买卖匹配问题。原创 2025-06-15 00:00:00 · 696 阅读 · 0 评论 -
1341. 电影评分
通过SQL和Pandas都能有效解决用户和电影的统计排序问题。SQL方案更适合处理大数据量和复杂查询,Pandas更灵活适合数据探索。题目中对字典序的要求,需要用字符串最小值函数(MIN()或min())来实现。代码中注意避免数据库关键字冲突,例如别名key改为label或type。原创 2025-06-13 02:00:00 · 1419 阅读 · 0 评论 -
1321. 餐馆营业额变化增长
本题关键是按日期汇总顾客消费数据,再基于汇总数据计算滑动窗口的营业额总和与均值。自连接是一种通用但可能较慢的方法,窗口函数是更现代高效的解决方案。通过示例演示了如何按滑动窗口计算营业额,便于餐厅老板观察每日营业额波动趋势,指导经营决策。原创 2025-06-12 03:30:00 · 905 阅读 · 0 评论 -
1174. 即时食物配送 II
如何用SQL窗口函数高效选出分组的第一条记录。如何用条件聚合计算比例并格式化结果。Pandas中如何结合排序和分组完成相同功能。两种方法各有优势,灵活选择能更好适配场景。如果你平时做数据分析或者数据库管理,这个题目是非常实用的技能,掌握后能轻松处理类似的时间序列和分组统计问题。原创 2025-06-09 02:45:00 · 711 阅读 · 0 评论 -
1070. 产品销售分析 III
本文详细讲解了如何找出每个产品首次销售的年份及对应的销售记录。SQL中通过子查询结合MIN(year)和 JOIN 实现,简洁高效。Pandas中通过groupbymin配合merge实现,代码直观易懂。根据实际环境和需求选择合适的方案,可以更高效地完成数据分析任务。希望本文对你掌握相关查询技巧有所帮助!原创 2025-06-07 01:00:00 · 851 阅读 · 0 评论 -
626. 换座位
通过本篇博客,我们展示了如何使用 SQL 和 Pandas 解决学生座位交换问题。在 SQL 中,我们利用了CASE语句进行条件判断,并通过子查询或变量优化了最大id的计算;而在 Pandas 中,我们通过简单的排序和循环交换来处理问题。对于大规模数据,SQL 可能更加高效;对于小规模数据,Pandas 的灵活性和简洁性更具优势。在实际应用中,可以根据数据规模和场景选择最合适的解决方案。原创 2025-05-25 02:00:00 · 803 阅读 · 0 评论 -
608. 树节点
本文详细介绍了如何通过 SQL 和 Pandas 来判断树形结构中每个节点的类型。在 SQL 中,我们使用了CASE表达式和NOT EXISTS来判断节点的类型;在 Pandas 中,我们通过自定义函数和apply方法实现了相似的功能。通过这种方式,我们能够有效地处理树形结构,识别每个节点的类型。选择 SQL 还是 Pandas,取决于数据规模和处理需求,在数据库处理大规模数据时,SQL 可能更为高效,而 Pandas 在灵活性和小规模数据处理方面表现更好。原创 2025-05-25 00:15:00 · 820 阅读 · 0 评论 -
602. 好友申请 II :谁有最多的好友
通过本篇文章,我们详细讲解了如何使用 SQL 查询解决“找出拥有最多好友的人”的问题。我们分析了数据模型、解题思路,并提供了一个高效的 SQL 查询方法。这种方法不仅清晰易懂,而且在实际应用中具有较高的性能。希望本文对你理解 SQL 聚合查询及实际应用有所帮助。如果你有任何问题或建议,欢迎在评论区交流讨论!原创 2025-05-25 00:00:00 · 875 阅读 · 0 评论 -
585. 2016年的投资
这道题的关键在于将两个筛选条件解耦处理,最后求交集。无论是用 SQL 还是 Pandas,都能较优雅地完成任务。📌实战建议面对结构化数据,优先考虑 SQL 批处理。在探索性数据分析中,Pandas 更为灵活便捷。若你希望代码可复用、自动化集成,推荐 SQL。若你需要联动图表、数据建模,推荐 Pandas。如果你在实战中遇到类似问题,不妨尝试用这两种方式各写一遍,加深理解。👇欢迎留言分享你的方法或优化建议!原创 2025-05-24 03:00:00 · 913 阅读 · 0 评论 -
570. 至少有5名直接下属的经理
子查询:首先,我们使用一个子查询来统计每个经理的下属人数。具体来说,我们需要按managerId进行分组,并统计每个分组中的员工数(即下属数目)。我们需要确保managerId不为NULL,因为NULL表示没有经理的员工。主查询:在主查询中,我们通过E.id与子查询结果中的managerId进行匹配,返回符合条件的经理的姓名。在这篇文章中,我们探讨了如何通过 SQL 查询找出至少有五个直接下属的经理。我们通过使用子查询和GROUP BY聚合函数,结合HAVING子句来实现筛选功能。原创 2025-05-24 02:00:00 · 1003 阅读 · 0 评论 -
550. 游戏玩法分析 IV
SQL:适用于大数据量的处理,能高效地通过数据库进行复杂的查询和聚合操作。Pandas:适用于中小型数据集,代码易于理解且具有灵活性,可以快速实现和调试。通过 SQL 和 Pandas 两种方式,我们都可以有效地解决这个问题。选择使用哪种方法取决于数据的规模和工作环境。SQL 适合大规模数据集处理,而 Pandas 则在中小规模数据集上更为直观和灵活。无论哪种方法,都可以帮助我们解决实际问题,提升数据处理的效率。原创 2025-05-24 00:15:00 · 575 阅读 · 0 评论 -
184. 部门工资最高的员工
通过使用 SQL 查询的JOIN和子查询,我们能够高效地找出每个部门薪资最高的员工。此方法逻辑清晰,易于实现,尤其适用于数据量适中的情况。在实际应用中,了解如何根据需求选择合适的查询方法,可以帮助我们优化查询效率,并确保查询结果准确无误。如果你有更复杂的需求,可以进一步深入使用窗口函数等高级 SQL 特性进行优化。原创 2025-05-17 01:45:00 · 979 阅读 · 0 评论 -
180. 连续出现的数字
自连接方法:通过将表与自身连接三次,判断数字是否在连续的三行中相等。这种方法非常直观,但在数据量大的时候可能导致性能问题。窗口函数方法:使用LEAD()和LAG()窗口函数,判断当前行的num是否与前后两行相等,简洁高效。这两种方法各有优缺点,适用于不同的场景。自连接方法简单易懂,但性能较差;窗口函数方法更高效,适用于支持窗口函数的数据库。选择适合的解法依赖于数据量、数据库的特性以及开发者的需求。如果你使用的是支持窗口函数的数据库,那么推荐使用窗口函数方法,它在性能和可读性上都更优。原创 2025-05-17 01:30:00 · 582 阅读 · 0 评论 -
178. 分数排名
在这个问题中,我们展示了如何使用 SQL 的函数来根据分数进行排名,确保相同分数的排名相同,并且排名是连续的。我们还对比了RANK()和三者的不同,解释了为什么是本问题的最佳选择。此外,我们还提供了如何使用 Pandas 来解决相同问题的代码,展示了两者在功能上的一致性。这个问题不仅是对 SQL 窗口函数的一次实践,也帮助我们理解了如何在实际应用中处理排名计算。原创 2025-05-17 01:00:00 · 888 阅读 · 0 评论 -
176. 第二高的薪水
本文介绍了如何通过 MySQL 和 Pandas 两种方法来查询员工的第二高薪水。在数据库层面,MySQL 提供了一种简洁且高效的方式来执行此查询,适用于大多数场景。在数据处理层面,Pandas 提供了灵活的数据操作能力,适用于 Python 环境中的数据分析工作,尤其是在数据已经加载到内存中的情况下。根据具体的应用场景,可以选择适合的解决方案。如果数据已经存储在数据库中,使用 MySQL 是更加高效的选择;如果数据在内存中,Pandas 提供了更大的灵活性和便利。原创 2025-05-17 00:30:00 · 752 阅读 · 0 评论 -
177. 第N高的薪水
在这篇博客中,我们详细分析了如何在 MySQL 中查询第 N 高的不同工资。通过使用LIMIT和OFFSET,存储函数,以及 MySQL 8.0 及以上版本的窗口函数,我们展示了多种解决方案。每种方法各有优缺点,具体选择哪种方法应根据实际需求和数据量来决定。无论使用哪种方法,都应关注查询的性能和可扩展性,特别是在处理大数据集时,需要确保优化查询并适当使用索引。原创 2025-05-17 00:45:00 · 469 阅读 · 0 评论 -
3465. 查找具有有效序列号的产品
我们提供了三种不同的方法来实现这一目标,每种方法都有其优缺点,开发者可以根据具体需求选择合适的方式。在很多实际的数据库应用中,我们需要从大量的数据中筛选出符合特定格式的数据项。在数据库查询中,正则表达式是一个强大的工具,特别是当我们需要从文本中提取符合特定模式的数据时。我们的任务是根据产品的描述,筛选出包含有效序列号的产品。然而,问题不仅仅是匹配有效格式,还要确保我们排除掉一些无效序列号,如包含多余数字的。我们还可以采用另一种方式,即先通过正则表达式匹配所有的序列号,然后使用 SQL 的。原创 2025-05-08 02:45:00 · 504 阅读 · 0 评论 -
3436. 查找合法邮箱
筛选合法的邮箱地址是一项常见的数据处理任务,可以通过多种方式实现,包括使用 SQL 正则表达式或 Pandas 正则表达式。如果你已经将数据加载到应用层,并且需要进一步的处理,Pandas 提供了更多的灵活性。在现代的应用系统中,邮箱地址作为用户的唯一标识和沟通方式,通常需要进行格式校验。合法的邮箱地址不仅仅需要符合基本的格式要求,还需要确保没有特殊字符和错误的域名。表的数据加载到 Pandas DataFrame 中,可以使用 Python 中的正则表达式功能来过滤合法的邮箱地址。原创 2025-05-08 01:30:00 · 543 阅读 · 0 评论 -
sql-leetcode-2356. 每位教师所教授的科目种类的数量
可以使用GROUP BY和来统计每位老师教授的不同科目(subject_id)数量。原创 2025-04-18 00:30:00 · 186 阅读 · 0 评论 -
sql-leetcode-1965. 丢失信息的雇员
不过我们可以用 UNION的方式来模拟来实现相同的功能。原创 2025-04-13 02:15:00 · 148 阅读 · 0 评论 -
sql-leetcode-1978. 上级经理已离职的公司员工
我们要查找满足以下两个条件的员工:他们的薪水他们的,即他们的经理已经离职了可以使用 SQL 中的NOT IN或者LEFT JOINIS NULL的方式来查。原创 2025-04-13 03:30:00 · 290 阅读 · 0 评论 -
sql-leetcode-1890. 2020年最后一次登录
1890. 2020年最后一次登录 - 力扣(LeetCode)以下是获取 2020 年登录过的所有用户的最后一次登录时间 的 SQL 和 Pandas 解决方案:✅ Pandas 解决方案返回的结果格式如下所示(示例):需要我帮你把这段代码应用到你的数据上吗?可以贴一下样本我来演示下~原创 2025-04-11 02:15:00 · 268 阅读 · 0 评论 -
sql-leetcode-1873. 计算特殊奖金
可以使用 SQL 和 Pandas 两种方式来解决这个问题。下面是对应的解决方案。原创 2025-04-11 01:15:00 · 187 阅读 · 0 评论 -
sql-leetcode-1795. 每个产品在不同商店的价格
可以使用 SQL 中的UNION ALL来将每个商店的价格展开为行(也就是“行列转换”)。以下是重构Products。原创 2025-04-10 01:00:00 · 306 阅读 · 0 评论 -
sql-leetcode-1789. 员工的直属部门
员工明确指定了直属部门;员工只属于一个部门时,即使,该部门也应被视为直属部门。原创 2025-04-10 00:15:00 · 301 阅读 · 0 评论 -
sql-leetcode-1741. 查找每个员工花费的总时间
需要一个 SQL 或 Pandas 查询,来统计每个员工每天在办公室的总时间。我们来分别给出 SQL 和 Pandas 的实现。原创 2025-04-09 02:00:00 · 161 阅读 · 0 评论 -
sql-leetcode-1731. 每位经理的下属员工数量
可以使用 SQL 来解决这个问题,通过自连接Employees表来统计每位经理的下属数量及其平均年龄。原创 2025-04-09 01:30:00 · 253 阅读 · 0 评论 -
sql-leetcode-1729. 求关注者的数量
你可以使用以下查询来获取每个用户的关注者数量,按user_id。原创 2025-04-09 01:15:00 · 403 阅读 · 0 评论 -
sql-leetcode-1693. 每天的领导和合伙人
可以写一个SQL查询来统计每个date_id和make_name组合下,不同的lead_id和partner_id的数量。原创 2025-04-08 03:00:00 · 358 阅读 · 0 评论 -
sql-leetcode-1683. 无效的推文
可以使用以下 SQL 查询来获取所有无效推文的编号(tweet_id。原创 2025-04-08 02:15:00 · 260 阅读 · 0 评论 -
sql-leetcode-1667. 修复表中的名字
可以使用 SQL 和 Pandas 两种方式来修复名字的格式。原创 2025-04-08 01:15:00 · 259 阅读 · 0 评论 -
sql-leetcode-1661. 每台机器的进程平均运行时间
可以使用以下的。原创 2025-04-08 00:45:00 · 235 阅读 · 0 评论 -
sql-leetcode-1587. 银行账户概要 II
可以使用 SQL 或 Pandas 来解决这个问题。原创 2025-04-07 00:30:00 · 265 阅读 · 0 评论 -
sql-leetcode-1633. 各赛事的用户注册率
我们可以从Register表中找到每个contest_id中唯一的user_id数量。:我们从Users表中获取用户的总数。:用每个赛事的注册用户数除以总用户数,乘以 100,得出百分比。:按照百分比降序排序,若相同则按contest_id升序排序。原创 2025-04-07 02:45:00 · 350 阅读 · 0 评论 -
sql-leetcode-1581. 进店却未进行过交易的顾客
根据提供的表格结构和要求,我们的任务是找出那些光顾了购物中心但没有进行交易的顾客,并计算每个顾客光顾但没有交易的次数。我们可以利用Visits表来找到所有顾客的光临记录,然后通过表来检查哪些顾客有交易记录。那些在Visits表中有记录但在表中没有相应记录的顾客,就是我们要查找的顾客。原创 2025-04-07 00:00:00 · 306 阅读 · 0 评论 -
sql-leetcode-1527. 患某种疾病的患者
题目想筛选的患者,其conditions字符串中必须有DIAB1,但这个代码前面可以有空格,比如:✅'DIAB1A'✅❌'ABDIAB1C'(中间夹着,不行)DIAB1。原创 2025-04-06 01:30:00 · 633 阅读 · 0 评论 -
sql-leetcode-1407. 排名靠前的旅行者
在 SQL 中,当使用LEFT JOIN时,如果右表没有匹配的行,左表的相关列会返回NULL。如果你想把这些NULL值替换为0,可以使用COALESCE函数或IFNULL函数(取决于数据库类型)。使用COALESCE来将NULL值替换为0。原创 2025-04-05 00:00:00 · 339 阅读 · 0 评论 -
sql-leetcode-1517. 查找拥有有效邮箱的用户
可以使用 SQL 和 Pandas 两种方式来查找具有的用户。原创 2025-04-06 00:45:00 · 272 阅读 · 0 评论 -
sql-leetcode-1484. 按日期分组销售产品
根据你的需求,我们可以通过SQL和Pandas来解决这个问题。原创 2025-04-05 03:15:00 · 349 阅读 · 0 评论 -
sql-leetcode-1378. 使用唯一标识码替换员工ID
可以使用LEFT JOIN来解决这个问题,确保所有员工都包含在结果集中,即使他们没有唯一标识码(unique_id)。原创 2025-04-04 01:45:00 · 536 阅读 · 0 评论