当前位置: 首页 > news >正文

SQL刷题笔记——高级条件语句

目录

1题目:SQL149 根据指定记录是否存在输出不同情况

2 作答解析

3 知识点

3.1 count函数

3.2 内连接与左连接


1题目:SQL149 根据指定记录是否存在输出不同情况

2 作答解析

#正确答案
select 
uid, incomplete_cnt, incomplete_rate
from (select ui.uid as uid, ui.level as `level`, count(er.start_time) as answer_cnt #每个用户的作答数量 判断是否有作答记录, count(if(er.submit_time is null, er.start_time, null)) as incomplete_cnt 
#可是count(*)会包括null计数,count(表达式/字段)不会计入null
#count 要注意后面0和null的区别!!!!, round( if( count(er.start_time) = 0, 0,count(if(er.submit_time is null, er.start_time, null))/count(er.start_time)), 3) as incomplete_rate#外面这个if是为了防止分母为0的错误,count(表达式/字段)不会计入null, max(if(ui.level=0 and count(if(er.submit_time is null, er.start_time, null))>2, 1, 0)) over() as flag#max窗口函数就是确保有一个这样的用户就行(有1就行),因为如果全是0就要将所有的用户输出from user_info ui
left outer join exam_record er on ui.uid = er.uid
# 这里是左连接,而不是内连接,要保证每个用户都有在,而表er中只有3种uidgroup by ui.uid, ui.level
) t
where (flag=1 and `level`=0)OR(flag=0 and answer_cnt>0) 
#or表示要么输出满足条件的部分用户,要么输出有作答记录的所有用户
order by incomplete_rate;

3 知识点

3.1 count函数

在 SQL 中,COUNT() 函数的计算规则是:

  • COUNT(*) 会计算所有行,不管其中的值是否为 NULL。
  • COUNT(表达式) 或 COUNT(字段) 只会计算非 NULL 的值,即 NULL 值会被排除在计数之外。

3.2 内连接与左连接

 1)内连接:只两个表保留相同的

2)左连接:合并后左边的表所有行都保留,若左边的表有空值则删除(即删除右边没有匹配上的)

此题中,如果是内连接,只能得到ui和er都有的数据表:

由题可知,er中只有1001,1002,1003这几个uid,如用内连接则丢失了1004,1005,1006这几个uid。

但如果是左连接,则会保证左边的表即ui中的数据都保留,:

相关文章:

SQL刷题笔记——高级条件语句

目录 1题目:SQL149 根据指定记录是否存在输出不同情况 2 作答解析 3 知识点 3.1 count函数 3.2 内连接与左连接 1题目:SQL149 根据指定记录是否存在输出不同情况 2 作答解析 #正确答案 select uid, incomplete_cnt, incomplete_rate from (select …...

与 Oracle Dataguard 相关的进程及作用分析

与 Oracle Dataguard 相关的进程及作用分析 目录 与 Oracle Dataguard 相关的进程及作用分析与 Oracle Dataguard 相关的进程及作用分析一、主库的进程1、LGWR 进程2、ARCH进程3、LNS 进程 二、备库的进程1、RFS 进程2、ARCH3、MRP(Managed Recovery Process&#x…...

游戏语音趋势解析,社交互动有助于营造沉浸式体验

语音交互的新架构出现 2024 年标志着对话语音 AI 取得了突破,出现了结合 STT → LLM → TTS 模型来聆听、推理和回应对话的协同语音系统。 OpenAI 的 ChatGPT 语音模式将语音转语音技术变成了现实,引入了基于音频和文本信息进行端到端预训练的模型&…...

美食烹饪互动平台

本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) IDEAEclipseVisual Studio Code(VScode)Navica…...

【51单片机零基础-chapter5:模块化编程】

模块化编程 将以往main中泛型的代码,放在与main平级的c文件中,在h中引用. 简化main函数 将原来main中的delay抽出 然后将delay放入单独c文件,并单独开一个delay头文件,里面放置函数的声明,相当于收纳delay的c文件里面写的函数的接口. 注意,单个c文件所有用到的变量需要在该文…...

Redis中的主从/Redis八股

四、Redis主从 1.搭建主从架构 不像是负载均衡,这里是主从,是因为redis大多数是读少的是写 步骤 搭建实例(建设有三个实例,同一个ip不同端口号) 1)创建目录 我们创建三个文件夹,名字分别叫700…...

ROS笔记

自定义消息的发布 1.创建空间包 1.创建ROS工作空间: mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make source devel/setup.bash 创建工作空间,编译设置环境 2.创建工作空间中的ROS包: cd ~/catkin_ws/src catkin_create_pkg your_pa…...

在 Linux 上调试 C++ 程序

在 Linux 上调试 C 程序是一个常见的开发任务,Linux 提供了多种强大的工具来帮助你进行调试。以下是常用的调试方法和工具. 1. 使用 GDB (GNU Debugger) GDB 是最常用且功能强大的命令行调试器,适用于 C、C 和其他语言。它允许你逐步执行代码、设置断点…...

让跨 project 联查更轻松,SLS StoreView 查询和分析实践

作者:章建(处知) 概述 日志服务 SLS 是云原生观测和分析平台,为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台化服务。SLS 提供了多地域支持 [ 1] ,方便用户可以根据数据源就近接入 SLS 服务&#xff0…...

20240107-类型转换

1. 自动类型转换 不损失数据精度的前提下,可自动完成变量的类型转换;不损失数据精度指不将超出变量可表示范围的值赋给该变量。 2.强制类型转换 若出现精度损失,java不会自动完成类型转换,需强制进行,见下代码的第8…...

关于Linux PAM模块下的pam_listfile

讲《Linux下禁止root远程登录访问》故事的时候,说好会另开一篇讲讲pam_listfile。我们先看看pam_listfile的man文档怎么介绍的。 下面这些就好比人物的简介,甚是恼人;让人看得不明就里,反正“他大舅他二舅都是他舅”。可以直接跳…...

OKHttp调用第三方接口,响应转string报错okhttp3.internal.http.RealResponseBody@4a3d0218

原因分析 通过OkHttp请求网络,结果请求下来的数据一直无法解析并且报错,因解析时String res response.body().toString() 将toString改为string即可!...

弱电与电力工程领域,如何通过工程项目管理软件提升效率

在弱电与电力工程领域,通过益企工程云等工程项目管理软件提升效率的方法主要体现在以下几个方面: 1.智能化管理 自动化流程:益企工程云通过自动化处理日常任务和流程,减少手动操作,提高工作效率。 智能预警&#xff…...

引领实时数据分析新时代:阿里云实时数仓 Hologres

在数字化和智能化转型的浪潮中,数据已成为企业决策和运营优化的重要资产。传统的数据仓库解决方案虽然在一定程度上能够帮助企业管理数据,但随着业务需求的不断变化,实时数据处理和高效分析的能力显得愈加重要。为了应对这一挑战,…...

什么是中间件中间件有哪些

什么是中间件? 中间件(Middleware)是指在客户端和服务器之间的一层软件组件,用于处理请求和响应的过程。 中间件是指介于两个不同系统之间的软件组件,它可以在两个系统之间传递、处理、转换数据,以达到协…...

css中的部分文字特性

文章目录 一、writing-mode二、word-break三、word-spacing;四、white-space五、省略 总结归纳常见文字特性,后续补充 一、writing-mode 默认horizontal-tbwriting-mode: vertical-lr; 从第一排开始竖着排,到底部再换第二排,文字与文字之间从…...

PyQt5 UI混合开发,控件的提升

PromoteLabelTest.py 提升的类 import sys from PyQt5.QtWidgets import QApplication, QWidget,QVBoxLayout,QTextEdit,QPushButton,QHBoxLayout,QFileDialog,QLabelclass PromoteLabel(QLabel):def __init__(self,parent None):super().__init__(parent)self.setText("…...

IP查询于访问控制保护你我安全

IP地址查询 查询方法: 命令行工具: ①在Windows系统中,我们可以使用命令提示符(WINR)查询IP地址,在弹窗中输入“ipconfig”命令查看本地网络适配器的IP地址等配置信息; ②在Linux系统中&…...

SpringBoot数据层解决方案

文章目录 1. 数据层解决方案2. 数据源技术 1. 数据层解决方案 现有数据层解决方案技术选型:Druid MyBatis-Plus MySQL 数据源:DruidDataSource持久化技术:MyBatis-Plus / MyBatis数据库:MySQL 下面的研究就分为三个层面进行研…...

前端数据模拟器 mockjs 和 fakerjs

功能:帮助前端生成随机数据,独立于后端单独开发 一、mockjs 安装:npm install mockjs 优点:官网是中文。 缺点:目前该库已经无人维护,也没人解决github上的bug。 官网 github地址 二、fakerjs 安装&#xf…...

分布式存储技术全景解析:从架构演进到场景实践

目录 技术演进与市场新格局核心架构设计深度剖析前沿技术创新与性能突破行业应用场景实践挑战与未来发展趋势1. 技术演进与市场新格局 1.1 从集中式到分布式的范式转移 传统集中式存储(如NAS/SAN)在扩展性和容错性方面面临根本性瓶颈,而分布式存储通过水平扩展架构和多节点…...

qwen 2.5 并行计算机制:依靠 PyTorch 和 Transformers 库的分布式能力

qwen 2.5 并行计算机制:依靠 PyTorch 和 Transformers 库的分布式能力 完整可运行代码: import torch import torch.nn.functional as F from transformers...

容器化革命:告别传统Dockerfile,拥抱现代构建最佳实践

前言 还记得我第一次自信满满地写Dockerfile时,感觉自己像个DevOps天才👑。但很快我就发现,管理这些文件变成了噩梦——安全问题、意外的构建问题、臃肿的镜像层出不穷。如果你一直在手动编写Dockerfile,让我告诉你:有更好的方法! 本文将揭示传统Dockerfile编写方式的…...

【HarmonyOS Next之旅】DevEco Studio使用指南(二十九) -> 开发云数据库

目录 1 -> 开发流程 2 -> 创建对象类型 3 -> 添加数据条目 3.1 -> 手动创建数据条目文件 3.2 -> 自动生成数据条目文件 4 -> 部署云数据库 1 -> 开发流程 云数据库是一款端云协同的数据库产品,提供端云数据的协同管理、统一的数据模型和…...

Playwright 测试框架 - Node.js

🚀超全实战:基于 Playwright + Node.js 的自动化测试项目教程【附源码】 📌 本文适合自动化测试入门者 & 前端测试实战者。从零开始手把手教你搭建一个 Playwright + Node.js 项目,涵盖配置、测试用例编写、运行与调试、报告生成以及实用进阶技巧。建议收藏!👍 �…...

HTML实现端午节主题网站:龙舟争渡,凭吊祭江诵君赋。

名人说:龙舟争渡,助威呐喊,凭吊祭江诵君赋。——苏轼《六幺令天中节》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、项目概览:传统与现代的技术碰撞1. 核心特…...

Elasticsearch的集群管理介绍

Elasticsearch 集群管理是确保分布式环境下系统稳定运行、高可用和高性能的关键。以下从集群架构、节点类型、故障转移到监控优化,全面解析 Elasticsearch 集群管理的核心要点: 一、集群架构与节点类型 1. 基本概念 集群(Cluster):由一个或多个节点组成,共同存储数据并…...

VScode编译调试debug,gpu的cuda程序,Nsight

进行下面操作的前提是,我们的环境已经能跑简单的CUDA程序了。 一、安装Nsight 二、创建launch.json文件 {"version": "0.2.0","configurations": [{"name": "CUDA C: Launch","type": "cuda-gdb…...

精英-探索双群协同优化(Elite-Exploration Dual Swarm Cooperative Optimization, EEDSCO)

一种多群体智能优化算法,其核心思想是通过两个分工明确的群体——精英群和探索群——协同工作,平衡算法的全局探索与局部开发能力,从而提高收敛精度并避免早熟收敛。 一 核心概念 在传统优化算法(如粒子群优化、遗传算法&#xf…...

JVM——云原生时代JVM的演进之路

引入 在风云变幻的技术世界里,JVM(Java Virtual Machine)作为 Java 语言的基石,长久以来承载着无数开发者构建软件系统的梦想。从 20 世纪 90 年代 Java 的诞生,到如今云原生时代的大幕拉开,JVM 经历了岁月…...