广告
返回顶部
首页 > 资讯 > 数据库 >SQL查询的解决方法有哪些
  • 853
分享到

SQL查询的解决方法有哪些

2024-04-02 19:04:59 853人浏览 薄情痞子
摘要

本篇内容介绍了“sql查询的解决方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!查询1下列表格由名

本篇内容介绍了“sql查询的解决方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

查询1

下列表格由名字和职业两列组成。需要查询所有姓名,且使其后紧跟一个括号,括住“职业”列中对应的首字母。

SQL查询的解决方法有哪些
  • 本文解决方案

SELECT CONCAT(Name, ’(‘, SUBSTR(Profession, 1, 1), ’)’) FROM table;

由于需要把名字和职业结合起来,可以使用CONCAT。而且因为括号内只需要一个字母,可以使用SUBSTR来传递列名、开始索引和结束索引。因为只需要首字母,所以我们将传递1,1(开始索引包括在内,结束索引不包括在内)。

查询2

蒂娜需要从她创建的EMPLOYEES表中计算所有员工的平均工资,但结果显示的平均值很低,这可能是键盘上的回零键失效了。她希望我们帮助找出错误计算的平均值和实际平均值之间的差异。我们须编写一个查找错误的查询(实际平均值-计算平均值)。

SQL查询的解决方法有哪些
  • 本文解决方案

SELECT AVG(Salary) - AVG(REPLACE(Salary, 0, ’’)) FROM table;

需要注意,只有一个表包含了实际工资值。为了创建错误场景,使用REPLACE替换0。接着传递列名、替换值以及用于替换REPLACE方法的值。然后,使用聚集函数AVG来求平均值的差。

查询3

给定一个表,它是由节点和父节点两列组成的二元搜索树。需要编写一个查询,以返回按节点值进行升序排序的节点类型。有3种类型:

  • 根(Root)——如果节点是根

  • 叶(Leaf)——如果节点是叶

  • 内部(Inner)——如果节点既不是根也不是叶

SQL查询的解决方法有哪些
  • 本文解决方案

经过初步分析,可以得出结论:如果给定节点N的相应P值为NULL(空),则它是根。而如果给定节点N存在于P列中,则它不是内部节点。基于此想法编写一个查询。

SELECT CASE     WHEN P IS NULL THENCONCAT(N, ' Root')     WHEN N IN (SELECTDISTINCT P from BST) THEN CONCAT(N, ' Inner')     ELSE CONCAT(N, ' Leaf')     ENDFROM BSTORDER BY N asc;

可使用CASE作为开关函数。正如前文提到的,如果对于给定节点N,P为空值,则N是根。因此,我们使用CONCAT来组合节点值和标签。

类似地,如果给定节点N存在于P列中,则它是内部节点。为了获得P列中的所有节点,我们编写了一个返回P列中所有不同节点的子查询。由于要求按节点值升序对输出进行排序,因此要使用ORDER  BY子句。

查询4

事务表由transaction_id, user_id, transaction_date,product_id, and  quantity(交易ID,用户ID,交易日期,产品ID和数量)组成。需要查询多天来购买产品的用户数量(注意,给定用户可以在一天内购买多个产品)。

SQL查询的解决方法有哪些
  • 本文解决方案

为了解决该查询,不能直接计算user_id的出现次数,由于给定用户在一天中可以多次购买,user_id或许会有多次返回。因此,只有当存在多个不同日期与给定的user_id相关联时,才意味着该用户多天购买了产品。按照相同方法,进行查询编写。(内部查询)

SELECT COUNT(user_id) FROM (SELECT user_id  FROM orders  GROUP BY user_id  HAVING COUNT(DISTINCT DATE(date))> 1 ) t1

由于问题询问的是user_id的数量,而不是user_id本身,因此在外部查询中使用 COUNT 。

查询5

给定一个订阅表,其中包含每个用户订阅的开始和结束日期。需要编写一个查询,根据与其他用户的日期重叠情况,为每个用户返回true/false。例如,如果user1的订阅周期与其他任何用户重叠,则查询必须为user1返回true。

SQL查询的解决方法有哪些
  • 本文解决方案

经过初步分析,我们可以知道必须将每项订阅与其他订阅进行比较。将userA的开始和结束日期视为startA  和endA,类似地,userB也依此设为startB和endB。如果startA≤endB且endA≥startB,则可以说这两个日期范围重叠。我们来举两个例子,先比较一下U1和U3:

startA = 2020–01–01 endA = 2020–01–31 startB = 2020–01–16 endB = 2020–01–26

这里可以看出,startA(2020–01–01)小于endB(2020–01–26),那么同样,endA(2020–01–31)大于  startB(2020–01–16),因此可以得出结论,日期重叠。类似地,如果比较U1和U4,上述条件就不成立,于是返回FALSE。

这里还必须确保不会将用户与其自己的订阅进行比较。同时希望运行一个左连接,能够自行将用户与满足条件的其他用户进行匹配。现在,我们将创建同一表的两个副本S1和S2。

SELECT * FROM subscriptions AS s1 LEFT JOIN subscriptions AS s2     ON s1.user_id != s2.user_id         AND s1.start_date <=s2.end_date         AND s1.end_date >=s2.start_date

给定条件连接,在日期之间存在重叠的情况下,对于S1中的每个user_id,应该存在来自S2的user_id。

  • 输出

SQL查询的解决方法有哪些

可以看到,以防日期重叠,每个用户都有一个对应用户。对于user1,有2行显示其与2个用户相匹配。对于用户4,对应的ID为空,表示他与其他任何用户都不匹配。现在,将其全部组合在一起,按照s1.user_ID字段进行分组,并检查s2.user_ID不为空的用户的值是否为真。

  • 最终查询

SELECT     s1.user_id    , (CASE WHEN s2.user_idIS NOT NULL THEN 1 ELSE 0 END) AS overlap FROM subscriptions AS s1 LEFT JOIN subscriptions AS s2     ON s1.user_id != s2.user_id         AND s1.start_date <=s2.end_date         AND s1.end_date >=s2.start_date GROUP BY s1.user_id

使用 CASE子句根据给定用户的s2.user_id值来标记1和0。最终输出如下:

SQL查询的解决方法有哪些

“SQL查询的解决方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: SQL查询的解决方法有哪些

本文链接: https://www.lsjlt.com/news/62016.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL查询的解决方法有哪些
    本篇内容介绍了“SQL查询的解决方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!查询1下列表格由名...
    99+
    2022-10-18
  • SQL查询方法有哪些
    SQL查询方法有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、 简单查询   简单的Transact-SQL查询只包括选择列表、FRO...
    99+
    2022-10-18
  • Linq to sql动态查询的方法有哪些
    这篇文章主要讲解了“Linq to sql动态查询的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linq to sql动态查询的方法有哪些”吧!1,Linq to sql动态查询...
    99+
    2023-06-17
  • sql索引查询的用法有哪些
    SQL索引查询的用法有以下几种:1. 等值查询:使用索引可以快速定位到指定值的记录,例如:```SELECT * FROM ...
    99+
    2023-09-05
    sql
  • Tk.mybatis零sql语句实现动态sql查询的方法有哪些
    这篇文章主要讲解了“Tk.mybatis零sql语句实现动态sql查询的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Tk.mybatis零sql语句实现动态sql查询的方法有哪些...
    99+
    2023-06-21
  • sql慢查询解决方案
    一、慢查询产生原因 大体有以下三种可能: 1、索引没有设计好; 2、SQL 语句没写好; 3、MySQL 选错了索引。 二、慢查询解决方案 1、针对索引没有设计好的解决方案:给表重新加索引重新加索引 2、针对SQL 语...
    99+
    2023-09-01
    sql 数据库 mysql Powered by 金山文档
  • SQL查询的特点有哪些
    这篇文章主要介绍SQL查询的特点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是SQL查询:sql是结构化查询语言(Structured Query Language)的简...
    99+
    2022-10-18
  • SQL随机查询有哪些
    这篇文章主要介绍“SQL随机查询有哪些”,在日常操作中,相信很多人在SQL随机查询有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL随机查询有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!SQ...
    99+
    2023-06-08
  • 域名查询的方法有哪些
    1. WHOIS查询:WHOIS是一种查询域名所有者、注册商、注册日期等信息的协议,可以在WHOIS查询网站上进行查询。2. DNS...
    99+
    2023-06-17
    域名查询 域名
  • 有哪些方法可以优化SQL Server数据库查询
    本篇内容介绍了“有哪些方法可以优化SQL Server数据库查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2022-10-18
  • 有哪些SQL查询小技巧
    本篇内容介绍了“有哪些SQL查询小技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 1、行列转...
    99+
    2022-10-18
  • mysql去重查询的方法有哪些
    本篇内容介绍了“mysql去重查询的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、插入测试数据下图测试数据中user_name...
    99+
    2023-07-05
  • gitlab权限查询的方法有哪些
    这篇文章主要介绍“gitlab权限查询的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“gitlab权限查询的方法有哪些”文章能帮助大家解决问题。通过Web界面查询权限GitLab的Web界...
    99+
    2023-07-05
  • LINQ动态查询的方法有哪些
    本篇内容介绍了“LINQ动态查询的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在LINQ动态查询中,Lambda表达式是许多标准...
    99+
    2023-06-17
  • MyBatis的批量查询方法有哪些
    这篇文章主要介绍了MyBatis的批量查询方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis的批量查询方法有哪些文章都会有所收获,下面我们一起来看看吧。一.直接循环插入@RestContro...
    99+
    2023-07-05
  • 查询ubuntu版本的方法有哪些
    本文小编为大家详细介绍“查询ubuntu版本的方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“查询ubuntu版本的方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。方法一:使用快捷键Ctrl+A...
    99+
    2023-07-04
  • MySQL单表查询的方法有哪些
    这篇文章主要讲解了“MySQL单表查询的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL单表查询的方法有哪些”吧!前言查询是数据操作至关重要的一部分,比如说在所有商品中查找...
    99+
    2023-07-04
  • Golang中IP查询的方法有哪些
    这篇“Golang中IP查询的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Golang中IP查询的方法有哪些”文...
    99+
    2023-07-05
  • mongodb指令查询方法有哪些
    MongoDB提供了丰富的查询方法,可以使用以下指令进行查询:1. find(): 用于查询集合中的文档。示例:db.collect...
    99+
    2023-08-24
    mongodb
  • SQL基础的查询语句有哪些
    这篇文章主要介绍“SQL基础的查询语句有哪些”,在日常操作中,相信很多人在SQL基础的查询语句有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL基础的查询语句有哪些”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作