SQL刷题快速入门(二)

其他章节
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 BYSUM() 聚合函数的例子:

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 departmentemployees表中的记录按department列分组。
  • HAVING COUNT(*) > 10确保只有那些拥有超过10名员工的部门会被包含在结果集中。
    如果没有GROUP BY子句,HAVING子句将不会起作用,因为没有分组的概念。此外,如果需要使用WHERE子句来过滤行,则在GROUP BYHAVING子句之前应用它。例如:
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
    

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dl学习笔记:(4)简单神经网络

&#xff08;1&#xff09;单层正向回归网络 bx1x2z100-0.2110-0.05101-0.051110.1 接下来我们用代码实现这组线性回归数据 import torch x torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]], dtype torch.float32) z torch.tensor([-0.2, -0.05, -0.05, 0.1]) w torch.…

【Unity3D】利用Hinge Joint 2D组件制作绳索效果

目录 一、动态绳索 &#xff08;可移动根节点&#xff09; 二、静态绳索 三、利用Skinning Editor(Unity2022.3.15f1正常使用) 四、注意事项 一、动态绳索 &#xff08;可移动根节点&#xff09; 动态绳索 DynamicRope空物体 Anchor和whitecircle是相同位置的物体&#xff…

OSPF小实验

引言 在前面的博客中我们学习了ospf的基础理论知识与配置&#xff1a;ospf&#xff08;2&#xff09;&#xff0c;相信大家对ospf已经有了一定的了解了&#xff0c;那么接下来我们就开始尝试做一个ospf的综合实验吧 实验拓扑 实验需求 r1-3为区域0&#xff0c;r3-r4为区域1&…

蓝桥杯刷题第二天——背包问题

题目描述 有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是Vi价值是Wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整数&#xff0c;N&#xff0c;V&am…

mono3d汇总

lidar坐标系 lidar坐标系可以简单归纳为标准lidar坐标系和nucense lidar坐标系&#xff0c;参考链接。这个坐标系和车辆的ego坐标系是一致的。 标准lidar坐标系 opendet3d&#xff0c;mmdetection3d和kitt都i使用了该坐标系 up z^ x front| /| /left y <------ 0kitti采…

接口防篡改+防重放攻击

接口防止重放攻击&#xff1a;重放攻击是指攻击者截获了一次有效请求(如交易请求),并在之后的时间里多次发送相同的请求&#xff0c;从而达到欺骗系统的目的。为了防止重放攻击&#xff0c;通常需要在系统中引入一种机制&#xff0c;使得每个请求都有一个唯一的标识符(如时间戳…

流程与管理篇:IPD核心思想与框架

关注作者 IPD是英文&#xff08;Integrated Product Development&#xff09;的写&#xff0c;中文 翻译为“集成产品开发”&#xff0c;它是一套产品开发的模式、理念与方法。 IPD整合了客户需求、市场分析和产品开发&#xff0c;建立了需求和产品之间的联系&#xff0c;开辟…

阿里云通义实验室自然语言处理方向负责人黄非:通义灵码2.0,迈入 Agentic AI

通义灵码是基于阿里巴巴通义大模型研发的AI 智能编码助手&#xff0c;在通义灵码 1.0 时代&#xff0c;我们针对代码的生成、补全和问答&#xff0c;通过高效果、低时延&#xff0c;研发出了国内最受欢迎的编码助手。 在通义灵码 2.0 发布会上&#xff0c;阿里云通义实验室自然…

记录 idea 启动 tomcat 控制台输出乱码问题解决

文章目录 问题现象解决排查过程 1. **检查 idea 编码设置**2. **检查 tomcat 配置**3.检查 idea 配置文件4.在 Help 菜单栏中&#xff0c;修改Custom VM Options完成后保存&#xff0c;并重启 idea 问题现象 运行 tomcat 后&#xff0c;控制台输出乱码 解决排查过程 1. 检查…

微透镜阵列精准全检,白光干涉3D自动量测方案提效70%

广泛应用的微透镜阵列 微透镜是一种常见的微光学元件&#xff0c;通过设计微透镜&#xff0c;可对入射光进行扩散、光束整形、光线均分、光学聚焦、集成成像等调制&#xff0c;进而实现许多传统光学元器件难以实现的特殊功能。 微透镜阵列&#xff08;Microlens Array&#x…

企业级NoSQL数据库Redis

1.浏览器缓存过期机制 1.1 最后修改时间 last-modified 浏览器缓存机制是优化网页加载速度和减少服务器负载的重要手段。以下是关于浏览器缓存过期机制、Last-Modified 和 ETag 的详细讲解&#xff1a; 一、Last-Modified 头部 定义&#xff1a;Last-Modified 表示服务器上资源…

金融项目实战 06|Python实现接口自动化——日志、实名认证和开户接口

目录 一、日志封装及应用&#xff08;理解&#xff09; 二、认证开户接口脚本编写 1、代码编写 1️⃣api目录 2️⃣script目录 2、BeautifulSoup库 1️⃣简介及例子 2️⃣提取html数据工具封装 3、认证开户参数化 一、日志封装及应用&#xff08;理解&#xff09; &…

Redis可视化工具--RedisDesktopManager的安装

需要安装使用&#xff0c;0.9.4以上是要收费的 下载地址&#xff1a;https://github.com/uglide/RedisDesktopManager/releases/download/0.9.3/redis-desktop-manager-0.9.3.817.exe 详情&#xff1a;https://blog.csdn.net/u012688704/article/details/82251338 点击进行安…

基于.Net Core+Vue的文件加密系统

1系统架构图 2 用例图 管理员角色的用例&#xff1a; 文件分享大厅&#xff1a;管理员可以访问文件分享大厅&#xff0c;下载文件。个人信息管理&#xff1a;管理员可以更新自己的个人信息&#xff0c;修改密码。用户管理&#xff1a;管理员负责创建、更新或删除用户账户&…

深入内核讲明白Android Binder【二】

深入内核讲明白Android Binder【二】 前言一、Binder通信内核源码整体思路概述1. 客户端向服务端发送数据流程概述1.1 binder_ref1.2 binder_node1.3 binder_proc1.4 binder_thread 2. 服务端的binder_node是什么时候被创建的呢&#xff1f;2.1 Binder驱动程序为服务创建binder…

Solidity01 Solidity极简入门

一、Solidity 简介 Solidity 是一种用于编写以太坊虚拟机&#xff08;EVM&#xff09;智能合约的编程语言。我认为掌握 Solidity 是参与链上项目的必备技能&#xff1a;区块链项目大部分是开源的&#xff0c;如果你能读懂代码&#xff0c;就可以规避很多亏钱项目。 Solidity …

LLM大语言模型的分类

从架构和功能的角度来看&#xff0c;LLM&#xff08;Large Language Model&#xff0c;大语言模型&#xff09;主要可以分为以下几种类型&#xff1a; **1. 基础语言模型&#xff1a;** * **定义:** 通过在大规模文本数据上进行预训练&#xff0c;学习语言的规律和模式&#…

JavaWeb简单开发

JavaWeb 开发是指基于 Java 技术栈进行 Web 应用开发的过程&#xff0c;主要依赖于 Java EE 或者 Spring 框架来构建服务器端应用。JavaWeb 的技术栈比较广泛&#xff0c;通常包括以下几个部分&#xff1a; 示例&#xff1a;简单的 JavaWeb 应用&#xff08;Spring Boot Thyme…

Spark任务提交流程

当包含在application master中的spark-driver启动后&#xff0c;会与资源调度平台交互获取其他执行器资源&#xff0c;并通过反向注册通知对应的node节点启动执行容器。此外&#xff0c;还会根据程序的执行规划生成两个非常重要的东西&#xff0c;一个是根据spark任务执行计划生…

【17】Word:林楚楠-供应链❗

目录 题目 NO1.2 NO3 NO4 NO5 NO6 NO7 NO89 题目 NO1.2 另存为&#xff1a;文件→另存为→文档→文件名/考生文件夹F12/FnF12→文件名/考生文件夹 插入→分节符→文本框→输入文件→排版_居中对齐→间距/回车去掉文本框的边框→选中文本框→格式&#xff1a;形状轮廓…