LeetCode_sql_day21(1440.计算布尔表达式的值)

news2025/1/12 17:42:03

描述:

表 Variables:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| name          | varchar |
| value         | int     |
+---------------+---------+
在 SQL 中,name 是该表主键.
该表包含了存储的变量及其对应的值.

表 Expressions:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| left_operand  | varchar |
| operator      | enum    |
| right_operand | varchar |
+---------------+---------+
在 SQL 中,(left_operand, operator, right_operand) 是该表主键.
该表包含了需要计算的布尔表达式.
operator 是枚举类型, 取值于('<', '>', '=')
left_operand 和 right_operand 的值保证存在于 Variables 表单中.

计算表 Expressions 中的布尔表达式。

返回的结果表 无顺序要求 。

结果格式如下例所示。

示例 1:

输入:
Variables 表:
+------+-------+
| name | value |
+------+-------+
| x    | 66    |
| y    | 77    |
+------+-------+

Expressions 表:
+--------------+----------+---------------+
| left_operand | operator | right_operand |
+--------------+----------+---------------+
| x            | >        | y             |
| x            | <        | y             |
| x            | =        | y             |
| y            | >        | x             |
| y            | <        | x             |
| x            | =        | x             |
+--------------+----------+---------------+

输出:
+--------------+----------+---------------+-------+
| left_operand | operator | right_operand | value |
+--------------+----------+---------------+-------+
| x            | >        | y             | false |
| x            | <        | y             | true  |
| x            | =        | y             | false |
| y            | >        | x             | true  |
| y            | <        | x             | false |
| x            | =        | x             | true  |
+--------------+----------+---------------+-------+
解释:
如上所示, 你需要通过使用 Variables 表来找到 Expressions 表中的每一个布尔表达式的值.

数据准备:

Create Table If Not Exists Variables (name varchar(3), value int)
Create Table If Not Exists Expressions (left_operand varchar(3), operator ENUM('>', '<', '='), right_operand varchar(3))
Truncate table Variables
insert into Variables (name, value) values ('x', '66')
insert into Variables (name, value) values ('y', '77')
Truncate table Expressions
insert into Expressions (left_operand, operator, right_operand) values ('x', '>', 'y')
insert into Expressions (left_operand, operator, right_operand) values ('x', '<', 'y')
insert into Expressions (left_operand, operator, right_operand) values ('x', '=', 'y')
insert into Expressions (left_operand, operator, right_operand) values ('y', '>', 'x')
insert into Expressions (left_operand, operator, right_operand) values ('y', '<', 'x')
insert into Expressions (left_operand, operator, right_operand) values ('x', '=', 'x')

分析:

①观察两个表 不妨将x和y的值 都加到expressions表中

此时就需要使用两个左连接

select left_operand,v1.value as l,operator,right_operand ,v2.value as r
from Expressions left join Variables v1 on Expressions.left_operand = v1.name
                 left join Variables v2 on Expressions.right_operand = v2.name

②使用case when 根据操作符operator 列  判断 l 和 r 列值大小 并赋true 和false

select
    left_operand,
    operator,
    right_operand,
             case
             when operator = '>' then if(l > r,'true','false')
             when operator = '<' then if(l < r,'true','false')
             when operator = '=' then if(l = r,'true','false')
         end value
    from t1;

代码:

with t1 as (
select left_operand,v1.value as l,operator,right_operand ,v2.value as r
from Expressions left join Variables v1 on Expressions.left_operand = v1.name
                 left join Variables v2 on Expressions.right_operand = v2.name)
select
    left_operand,
    operator,
    right_operand,
             case
             when operator = '>' then if(l > r,'true','false')
             when operator = '<' then if(l < r,'true','false')
             when operator = '=' then if(l = r,'true','false')
         end value
    from t1;

总结:

① 一开始走了一些弯路 将两个值连接后 用concat 连接 判断值 后来发现都是true  

原因 是 concat连接的都当成字符串 无法计算

② case when  可以用两种解法 

解法一:

找出所有true 的条件 然后 else false

case when operator = '>' and l>r then 'true' 

 when operator = '<' and l<r then 'true' 

 when operator = '=' and l=r then 'true' 

else 'false' end

解法二:

另外一种就是上述代码中 then里面加个if判断  很巧妙 之前没用过

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

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

相关文章

2024年华为9月4日秋招笔试真题题解

2024年华为0904秋招笔试真题 二叉树消消乐好友推荐系统维修工力扣上类似的题--K站中转内最便宜的航班 二叉树消消乐 题目描述 给定原始二叉树和参照二叉树(输入的二叉树均为满二叉树&#xff0c;二叉树节点的值范围为[1,1000]&#xff0c;二叉树的深度不超过1000)&#xff0c…

智汇云舟斩获创客北京2024鲲鹏应用创新大赛北京区总决赛一等奖

近日&#xff0c;创客北京2024鲲鹏应用创新大赛华鲲振宇北京赛区总决赛在北京鲲鹏联合创新中心圆满举办。智汇云舟团队的参赛作品“视频孪生&#xff0c;把数字孪生升级为虚实共生”斩获鲲鹏原生开发赛道&#xff08;泛政府&#xff09;一等奖。 面向全球开发者的顶级赛事&…

python去除非页眉页脚,非背景非正式的图片、文字水印代码

import fitz import os import shutildef remove_watermarks_by_sizes(pdf_path, output_path, watermark_sizes, watermark_rects, watermark_texts):"""从PDF中删除特定大小的图片&#xff08;水印&#xff09;和特定的文字。参数:pdf_path (str): 输入PDF文件…

现金检测系统源码分享

现金检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

草莓大模型(o1 )同步——实战2024国赛数学建模C题

模型介绍 这是一系列全新AI模型&#xff0c;能推理复杂的任务&#xff0c;解决比以前科学、编程、数学模型更难的问题。o1 模型(草莓&#xff09;与 GPT-4o 的主要区别在于:它能够比前代更好地处理复杂的编程和数学问题&#xff0c;并能解释其推理过程.以往模型不同的是&#…

引用和指针的区别(面试概念性题型)

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 概念概述 内存占用&#xff1a; 引用&#xff1a;引用一个变量时&#xff0c;实际上并不占用额外的内存空间&#xff0c;它就是原始变量的别名。指针&#xf…

裸金属 Ironic T和2024.1版本 功能比较

一、Train版 裸金属配置向导 1、系统环境 ansible 2.7.18 kolla-ansible 7.2.2.dev9[rootkolla-ansible-master ~]# python --version Python 2.7.5 [rootkolla-ansible-master ~]# cat /etc/centos-release CentOS Linux relea…

SAP B1 单据页面自定义 - 用户界面编辑字段

背景 接《SAP B1 基础实操 - 用户定义字段 (UDF)》&#xff0c;在设置完自定义字段后&#xff0c;如下图&#xff0c;通过打开【用户定义字段】可打开表单右侧的自定义字段页。然而再开打一页附加页面操作繁复&#xff0c;若是客户常用的定义字段&#xff0c;也可以把这些用户…

快充协议方案,Type-C接口受电端Sink取电快充协议芯片

快充协议芯片是确保充电器与设备之间兼容性的关键&#xff0c;它根据设备的需求提供合适的电压与电流&#xff0c;从 而实现更快速的充电体验。 快充协议芯片不仅仅是提升充电速度&#xff0c;更重要的是确保充电器与设备之间的兼容性&#xff0c;避免因协议不匹配导致的充电效…

从零开始打造一台简易计算机

从零开始打造一台可运行的简易计算机专题系列结合一个免费开源的 线上数字电路模拟器(仿真器), 从最基本的继电器(晶体管)功能讲起, 到最终完成一个可以批量执行指令的简易计算机. 跟随文中的步骤, 即可亲手在线上打造一台可运行的简易的计算机, 在此过程中, 将获得对计算机底…

2024lims实验室管理系统排名 6款LIMS软件厂商

随着实验室管理的不断升级&#xff0c;LIMS系统逐渐成为实验室不可或缺的一部分。这款实验室信息管理系统以其稳定性、多功能性和用户友好性在竞争激烈的市场中脱颖而出。 随着实验室管理的不断升级&#xff0c;LIMS系统逐渐成为实验室不可或缺的一部分。这款实验室信息管理系…

如何使用Python创建目录或文件路径列表

在 Python 中&#xff0c;创建目录或生成文件路径列表通常涉及使用 os、os.path 或 pathlib 模块。下面是一些常见的任务和方法&#xff0c;用于在 Python 中创建目录或获取文件路径列表。 问题背景 在初始阶段的 Python 学习过程中&#xff0c;可能遇到这样的问题&#xff1a…

NVG040W语音芯片:为制氧机带来个性化语音提示和报警功能

在当今社会&#xff0c;家庭医疗设备和健康保健产品越来越受到人们的关注。制氧机作为其中的一种&#xff0c;为许多需要氧气治疗的人们提供了重要的帮助。然而&#xff0c;对于许多用户来说&#xff0c;如何正确操作和维护这些设备仍然是一个挑战。为此&#xff0c;NVG040W语音…

点成分享 | 微生物浊度测量技术:比浊仪校准的最佳实践与策略

比浊仪通过检测悬浮液中微生物对光的散射程度来反映微生物含量。微生物浓度越高&#xff0c;透过的光越少&#xff0c;散射的光越多。因此&#xff0c;微生物浓度与透光度成反比&#xff0c;与吸光度成正比。该技术广泛应用于细菌浊度测定、抗生素药敏实验等微生物检测领域。 …

ElementPlus表单验证报错 formEl.validate is not a function

出现问题的代码 <!-- 密码重置弹框 --><el-dialog v-model"innerVisible" width"500" title"密码重置" append-to-body><el-form ref"ruleFormRef" style"max-width: 600px" :model"passForm" sta…

“鸿儒”——AIGC团队知识管理工作台

项目介绍 “鸿儒”——AIGC团队知识管理工作台是一项创新性的信息管理和协作平台&#xff0c;“鸿儒”立足于AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;技术的前沿。该平台以机器学习和自然语言处理技术为核心&#xff0c;致力于协助团队更加高效…

Java实现邮箱发送功能详细步骤及注意事项?

Java实现邮箱发送怎么设置&#xff1f;JavaMail发送邮件的流程&#xff1f; 无论是用于用户注册验证、密码重置&#xff0c;还是系统通知&#xff0c;邮箱发送功能都能提供可靠的通信手段。AokSend将详细介绍Java实现邮箱发送功能的步骤&#xff0c;并探讨其中的注意事项。 J…

哪种掏耳朵方式好?高性价比的可视挖耳勺推荐!

耳朵健康作为人们个人健康的一种方式&#xff0c;它的重要性不可忽视。市面上的掏耳勺有多种&#xff0c;铁质掏耳勺、棉签、可视挖耳勺等&#xff0c;那么哪种掏耳勺最好用呢&#xff1f; 答案显而易见是可视挖耳勺&#xff0c;因为它摒弃了传统掏耳勺的耳勺头硬邦邦的问题&am…

jupyter notebook添加环境/添加内核

参考&#xff1a; jupyter notebook添加环境/添加内核&#xff08;超详细&#xff09;_python_leoound-GitCode 开源社区 Jupyter Notebook 切换虚拟环境_jupyter 选择环境-CSDN博客 1.激活想添加的环境 conda activate pytorch39 2.下载核 conda install ipykernel 3.按照…

MINICPM-V2_6之图像embedding的resampler-代码解读

目的 基于上一篇MINICPM-V2_6图像得到embedding-代码解读将图片patch找到对应的embedding&#xff08;包括位置embedding和像素embedding&#xff09;&#xff0c;embedding经过多层attention后会得到vision_embedding&#xff0c;vision_embedding的长度对应的是patch的个数&…