SQL刷题快速入门(二)
其他章节:SQL刷题快速入门(一)
承接上一章节,本章主要讲SQL的运算符、聚合函数、SQL保留小数的几种方式三个部分
运算符
SQL 支持多种运算符,用于执行各种操作,如算术运算、比较、赋值、逻辑运算等。以下是一些常见的 SQL 运算符类型及其示例:
算术运算符
+(加)-(减)*(乘)/(除)%(取模)
SELECT column1 + column2 AS sum, column1 - column2 AS difference FROM table_name;
比较运算符
=(等于)<>或!=(不等于)>(大于)<(小于)>=(大于等于)<=(小于等于)BETWEEN ... AND ...(在…和…之间)LIKE(模式匹配)IN(在集合中)IS NULL(是 NULL)IS NOT NULL(不是 NULL)
SELECT * FROM table_name WHERE column1 > 100;
逻辑运算符
AND(逻辑与)OR(逻辑或)NOT(逻辑非)- between a and b ,包含左右边界
SELECT * FROM table_name WHERE column1 > 100 AND column2 < 50;
赋值运算符
=(赋值)
UPDATE table_name SET column1 = value WHERE condition;
位运算符
&(按位与)|(按位或)^(按位异或)~(按位非)<<(左移)>>(右移)
SELECT column1 & column2 AS bitwise_and FROM table_name;
特殊运算符
||(字符串连接,在某些数据库中,如 PostgreSQL)CONCAT(字符串连接,在某些数据库中,如 MySQL)
SELECT column1 || ' ' || column2 AS concatenated_string FROM table_name;
请注意,不同的数据库系统可能支持不同的运算符集合,并且可能会有特定的语法差异。在使用特定数据库时,应该参考其官方文档以了解详细信息。
聚合函数
聚合函数(Aggregate Functions)在 SQL 中用于对一组值(通常是表中的多行)进行计算,并返回单个值作为结果。这些函数在处理数据集时非常有用,尤其是在进行数据分析和报告时。以下是一些常见的 SQL 聚合函数及其用途:
COUNT()
- 返回指定列中的行数。
- 示例:
COUNT(*)返回表中的总行数,COUNT(column_name)返回非 NULL 值的行数。
SUM()
- 返回指定列值的总和。
- 示例:
SUM(column_name)返回column_name列所有值的总和。
AVG()
- 返回指定列值的平均值(算术平均值)。
- 示例:
AVG(column_name)返回column_name列所有值的平均值。
MAX()
- 返回指定列中的最大值。
- 示例:
MAX(column_name)返回column_name列中的最大值。
MIN()
- 返回指定列中的最小值。
- 示例:
MIN(column_name)返回column_name列中的最小值。
FIRST()
- 返回指定列中的第一个值。
- 注意:不是所有数据库系统都支持
FIRST()函数。
LAST()
- 返回指定列中的最后一个值。
- 注意:不是所有数据库系统都支持
LAST()函数。
STDDEV()
- 返回指定列值的标准偏差。
- 示例:
STDDEV(column_name)返回column_name列值的标准偏差。
VAR()
- 返回指定列值的方差。
- 示例:
VAR(column_name)返回column_name列值的方差。
聚合函数通常与 GROUP BY 子句一起使用,此时只能用having,不能用where,以便对每个分组进行计算。以下是一个使用 GROUP BY 和 SUM() 聚合函数的例子:
SELECT category, SUM(price) AS total_price
FROM products
GROUP BY category;
在这个例子中,SUM(price) 计算每个类别 category 的总价格,并使用 GROUP BY 子句按类别分组结果。
having
where中的属性不能是聚合函数得来的,如果属性是聚合函数得来的新属性,得用having!而having的属性必须出现在group by中
在MySQL中,HAVING子句通常与GROUP BY子句搭配使用,用于对分组后的结果进行条件过滤。HAVING子句的作用与WHERE子句类似,但是WHERE子句不能与聚合函数(如SUM()、COUNT()、AVG()等)一起使用,而HAVING可以。
以下是HAVING子句的一些关键点:
- 搭配使用:
HAVING子句通常与GROUP BY子句一起使用。 - 作用:它用于指定分组(由
GROUP BY创建)必须满足的条件,以使这些分组在最终结果集中出现。 - 聚合函数:
HAVING允许您包含聚合函数来过滤分组后的结果。
以下是一个使用HAVING子句的示例:
HAVING子句的限制:HAVING所选的属性必须是包含在GROUP BY子句中的列,或者用于聚合函数。如果university列没有被包含在GROUP BY子句中,则不能用。
列与聚合函数:在SELECT语句中选择非聚合列时,这些列必须出现在GROUP BY子句中。
要解决这个问题,您需要做以下修改:
- 确保所有在
SELECT子句中出现的非聚合列都在GROUP BY子句中列出。 - 如果您想要根据
university列过滤结果,您应该在WHERE子句中进行,而不是在HAVING子句中。
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;
在这个例子中:
GROUP BY department将employees表中的记录按department列分组。HAVING COUNT(*) > 10确保只有那些拥有超过10名员工的部门会被包含在结果集中。
如果没有GROUP BY子句,HAVING子句将不会起作用,因为没有分组的概念。此外,如果需要使用WHERE子句来过滤行,则在GROUP BY和HAVING子句之前应用它。例如:
SELECT department, COUNT(*) AS employee_count
FROM employees
WHERE salary > 50000
GROUP BY department
HAVING COUNT(*) > 10;
在这个例子中:
WHERE salary > 50000首先过滤出薪水超过50000的员工。- 然后按
department分组。 - 最后,
HAVING COUNT(*) > 10确保只有那些拥有超过10名高薪员工的部门会被选中。
保留小数
不同数据库的函数可能存在细微差别,这里以 MySQL 为例,可以使用以下函数来处理数值的四舍五入、截断、向上取整和向下取整操作:
1. 四舍五入保留小数
函数: ROUND(number, decimals)
-
参数:
number: 要进行四舍五入的数值。decimals: 要保留的小数位数。如果为正数,表示保留小数点后的位数;如果为负数,表示对整数部分进行四舍五入。
-
举例:
SELECT ROUND(123.4567, 2); -- 结果为 123.46 SELECT ROUND(123.456, 0) AS rounded_value; -- 意思是保留整数,结果是 123 SELECT ROUND(123.4567, -1); -- 结果为 120
2. 截断到指定位
函数: TRUNCATE(number, decimals)
-
参数:
number: 要进行截断的数值。decimals: 要保留的小数位数。如果为正数,表示保留小数点后的位数;如果为负数,表示对整数部分进行截断。
-
举例:
SELECT TRUNCATE(123.4567, 2); -- 结果为 123.45 SELECT TRUNCATE(123.4567, -1); -- 结果为 120
3. 向上取整
函数: CEILING(number) 或 CEIL(number)
-
参数:
number: 要进行向上取整的数值。
-
举例:
SELECT CEILING(123.4567); -- 结果为 124 SELECT CEILING(-123.4567); -- 结果为 -123
4. 向下取整
函数: FLOOR(number)
-
参数:
number: 要进行向下取整的数值。
-
举例:
SELECT FLOOR(123.4567); -- 结果为 123 SELECT FLOOR(-123.4567); -- 结果为 -124
相关文章:
SQL刷题快速入门(二)
其他章节:SQL刷题快速入门(一) 承接上一章节,本章主要讲SQL的运算符、聚合函数、SQL保留小数的几种方式三个部分 运算符 SQL 支持多种运算符,用于执行各种操作,如算术运算、比较、赋值、逻辑运算等。以下…...
hive迁移后修复分区慢,怎么办?
我有1个30TB的分区表,客户给的带宽只有600MB,按照150%的耗时来算,大概要迁移17小时。 使用hive自带的修复分区命令(一般修复分区比迁移时间长一点),可能要花24小时。于是打算用前面黄大佬的牛B方案。 Hive增…...
代码随想录算法训练营day27
代码随想录算法训练营 —day27 文章目录 代码随想录算法训练营前言一、贪心算法理论基础二、455.分发饼干三、376. 摆动序列53. 最大子数组和总结 前言 今天是算法营的第27天,希望自己能够坚持下来! 今日任务: ● 贪心算法理论基础 ● 455.…...
python 代码使用 DeepXDE 库实现了一个求解二维非线性偏微分方程(PDE)的功能
import deepxde as dde import numpy as np import matplotlib.pyplot as plt import tensorflow as tf# 设置时空计算域 Lx 1 # x 范围从 0 到 1 Ly 1 # y 范围从 0 到 1 Lt 0.05 # t 范围从 0 到 0.05 geom dde.geometry.Rectangle([0, 0], [Lx, Ly]) # 空间域 timed…...
【Go】:深入解析 Go 1.24:新特性、改进与最佳实践
前言 Go 1.24 尚未发布。这些是正在进行中的发布说明。Go 1.24 预计将于 2025 年 2 月发布。本文将深入探讨 Go 1.24 中引入的各项更新,并通过具体示例展示这些变化如何影响日常开发工作,确保为读者提供详尽而有价值的参考。 新特性及改进综述 HTTP/2 …...
VUE3 一些常用的 npm 和 cnpm 命令,涵盖了修改源、清理缓存、修改 SSL 协议设置等内容。
以下是一些常用的 npm 和 cnpm 命令,涵盖了修改源、清理缓存、修改 SSL 协议设置等内容。 npm 常用命令 1. 修改 npm 源 更改为淘宝的 npm 镜像源(可以提高安装速度): bash复制代码 npm config set registry https://registry…...
【SpringBoot】@Value 没有注入预期的值
问题复现 在装配对象成员属性时,我们常常会使用 Autowired 来装配。但是,有时候我们也使用 Value 进行装配。不过这两种注解使用风格不同,使用 Autowired 一般都不会设置属性值,而 Value 必须指定一个字符串值,因为其…...
【STM32-学习笔记-6-】DMA
文章目录 DMAⅠ、DMA框图Ⅱ、DMA基本结构Ⅲ、不同外设的DMA请求Ⅳ、DMA函数Ⅴ、DMA_InitTypeDef结构体参数①、DMA_PeripheralBaseAddr②、DMA_PeripheralDataSize③、DMA_PeripheralInc④、DMA_MemoryBaseAddr⑤、DMA_MemoryDataSize⑥、DMA_MemoryInc⑦、DMA_DIR⑧、DMA_Buff…...
js实现一个可以自动重链的websocket客户端
class WebSocketClient {constructor(url, callback, options {}) {this.url url; // WebSocket 服务器地址this.options options; // 配置选项(例如重试间隔、最大重试次数等)this.retryInterval options.retryInterval || 1000; // 重试间隔&#…...
企业总部和分支通过GRE VPN互通
PC1可以ping通PC2 1、首先按照地址表配置ip地址 2、分别在AR1和AR3上配置nat 3、配置GRE a 创建tunnel接口,并选择tunnel协议为GRE,为隧道创建一个地址,用作互联 b 为隧道配置源地址或者源接口,这里选择源接口;再为…...
油猴支持阿里云自动登陆插件
遇到的以下问题,都已在脚本中解决: 获取到的元素赋值在页面显示,但是底层的value并没有改写,导致请求就是获取不到数据元素的加载时机不定,尤其是弱网情况下,只靠延迟还是有可能获取不到,且登陆…...
【2024年华为OD机试】(C卷,100分)- 字符串筛选排序 (Java JS PythonC/C++)
一、问题描述 题目描述 输入一个由N个大小写字母组成的字符串 按照ASCII码值从小到大进行排序 查找字符串中第K个最小ASCII码值的字母 (k > 1) 输出该字母所在字符串中的位置索引 (字符串的第一个位置索引为0) k如果大于字符串长度则输出最大ASCII码值的字母所在字符串…...
iOS - runtime总结
详细总结一下 Runtime 的核心内容: 1. 消息发送机制 // 消息发送的基本流程 id objc_msgSend(id self, SEL _cmd, ...) {// 1. 获取 isaClass cls object_getClass(self);// 2. 查找缓存IMP imp cache_getImp(cls, _cmd);if (imp) return imp(self, _cmd, ...);…...
第33 章 - ES 实战篇 - MySQL 与 Elasticsearch 的一致性问题
思维导图 0. 前言 MySQL 与 Elasticsearch 一致性问题是老生常谈了。网上有太多关于这方面的文章了,但是千篇一律,看了跟没看没有太大区别。 在生产中,我们往往会通过 DTS 工具将 binlog 导入到 Kafka,再通过 Kafka 消费 binlog&…...
Artec Leo 3D扫描仪与Ray助力野生水生动物法医鉴定【沪敖3D】
挑战:捕获大型水生哺乳动物(如鲸鱼)的数据,搭建全彩3D模型,用于水生野生动物的法医鉴定、研究和保护工作。 解决方案:Artec Eva、Artec Space Spider、Artec Leo、Artec Ray、Artec Studio、CT scans 效果&…...
PythonQT5打包exe线程使用
打包: pyinstaller --noconsole --onefile test.py–noconsole 表示不需要打开命令行 修改:test.spec 一般项目里面需要用的资源文件,比如lib、png、exe等。 需要单独修改spec文件 pathex[.],binaries[(D:/test.png, .),(D:/simsun.ttc, .…...
【Powershell】Windows大法powershell好(二)
PowerShell基础(二) 声明:该笔记为up主 泷羽的课程笔记,本节链接指路。 警告:本教程仅作学习用途,若有用于非法行为的,概不负责。 1. powershell 执行外部命令 powershell也可以执行一些外部的…...
前端学习-环境this对象以及回调函数(二十七)
目录 前言 目标 环境对象 作用 环境对象this是什么? 判断this指向的粗略规则是什么? 回调函数 目标 常见的使用场景 综合案例:Tab任务栏切换 总结 前言 男儿何不带吴钩,收取关山五十州 目标 能够分析判断函数运行在不…...
Element-plus、Element-ui之Tree 树形控件回显Bug问题。
需求:提交时,需要把选中状态和半选中状态 的数据id提交。如图所示: 数据回显时,会出现代码如下: <template><el-tree ref"treeRef" :data"tree" show-checkbox node-key"id" …...
互联网全景消息(10)之Kafka深度剖析(中)
一、深入应用 1.1 SpringBoot集成Kafka 引入对应的依赖。 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupI…...
Swift-Corelibs-Foundation 架构演进:从 Objective-C 到 Swift 的完整迁移指南
Swift-Corelibs-Foundation 架构演进:从 Objective-C 到 Swift 的完整迁移指南 【免费下载链接】swift-corelibs-foundation The Foundation Project, providing core utilities, internationalization, and OS independence 项目地址: https://gitcode.com/gh_mi…...
5步打造高效工作流:Super Productivity开源工具新手实战指南
5步打造高效工作流:Super Productivity开源工具新手实战指南 【免费下载链接】super-productivity Super Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitL…...
Jetson平台高温警告静默指南:深入解析notify_disable与nvpmodel_indicator.py
1. 为什么需要关闭Jetson的高温警告 当你把Jetson设备用在嵌入式系统或者工业自动化场景时,那个频繁弹出的"Caution - Hot surface. Do not touch"警告可能会让人抓狂。我去年在一个智能监控项目上就遇到过这种情况——设备在户外机箱里持续运行ÿ…...
Figma转JSON完全实战方案:实现设计数据与开发流程的无缝对接
Figma转JSON完全实战方案:实现设计数据与开发流程的无缝对接 【免费下载链接】figma-to-json 项目地址: https://gitcode.com/gh_mirrors/fi/figma-to-json Figma-to-JSON是一款创新的开源工具,专为解决设计工具与开发流程之间的数据鸿沟而生。通…...
Phi-3-mini-4k-instruct-gguf快速部署:7860端口网页服务+独立venv隔离环境实录
Phi-3-mini-4k-instruct-gguf快速部署:7860端口网页服务独立venv隔离环境实录 1. 模型简介 Phi-3-mini-4k-instruct-gguf 是微软 Phi-3 系列中的轻量级文本生成模型 GGUF 版本。这个模型特别适合以下场景: 智能问答文本改写与润色内容摘要生成简短创意…...
Python数据分析项目实战(044)——Pandas数据导出常用方法
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl to_csv() 作用:将DataFrame数据导出为CSV(逗号分隔值)格式文件,是最常用的数据导出格式之一。 import pandas as pddata = {姓名: [张三, 李四<...
台式电脑怎么连接打印机 4种方法详细教程
台式电脑连接打印机的方法多种多样,具体选择取决于打印机类型和使用环境。合理选择连接方式,不仅能提高打印效率,还能减少后续使用中的故障问题。下面将详细介绍几种常见的连接方法及操作步骤。 一、通过USB数据线连接 这种方式最为直接常见…...
从404到无损输出:一个Favicon抓取API的三年优化笔记(含CDN、懒加载避坑指南)
从404到毫秒响应:Favicon API架构演进与高并发实践 第一次收到用户反馈"favicon接口返回500错误"时,我们团队正在会议室讨论如何优化爬虫性能。那是个典型的周一早晨——咖啡还没喝完,警报先响了起来。这个看似简单的图标抓取服务&…...
CASS11.0再升级:新增实用功能与BUG修复全解析(2022.5.11版)
1. CASS11.0版本升级概览 作为测绘行业的老牌软件,CASS11.0这次更新又带来了不少惊喜。记得去年11月刚发布时,我就第一时间安装体验过,当时就被它的3D建模能力和土方计算优化惊艳到了。没想到短短半年时间,研发团队又连续推出了三…...
FLUX.1-dev像素生成模型部署教程:免配置镜像快速搭建像素艺术创作环境
FLUX.1-dev像素生成模型部署教程:免配置镜像快速搭建像素艺术创作环境 1. 像素幻梦工坊简介 Pixel Dream Workshop(像素幻梦工坊)是基于FLUX.1-dev扩散模型构建的专业像素艺术生成工具。它采用独特的16-bit像素风格界面设计,为创…...
