第19天:初级数据库学习笔记3

分组函数(多行处理函数)

即多个输入对应一个输出。前面讲的数据处理函数是单行处理函数。(在公司中常说单,多行处理函数)

分组函数包括五个:

  • max:最大值
  • min:最小值
  • avg:平均值
  • sum:求和
  • count:计数

例子:

 select max(sal),min(sal),avg(sal),sum(sal),count(ename) from emp;

分组函数自动忽略NULL。

例如:count(ename)结果为14,而count(comm)结果为4。(其中comm里面有null)

面试题:count(某个字段)与count(*)的区别。count(某个字段)是统计该字段不为空的总数,count(*)则是统计该表有多少行记录。count(数字)效果跟count(*)一样。

分组函数不能用在where后面

原因:where语句在执行的时候分组函数还没有进行分组

  • 分组函数执行之前需要先分组才能在使用
  • group by 可以进行分组若是没用group by 则自认为一组
  • 执行顺序:from,where,group by ,select,order by

分组查询

group by

注意:

  • group by 在where之后执行
  • 当sql语句中有group by 则select语句后面只能接参加分组的字段或者分组函数其他的字段不能加

语法:

  • 按某个字段分组:group by 字段1
  • 按多个字段联合分组:group by 字段1,字段2…
示例
- 示例一:找出每个岗位的平均薪资
- select job,avg(sal) from emp group by job;
示例二:找出每个部门不同岗位的平均薪资
select deptno,avg(sal) from emp group by deptno,job;

过滤 having

两个过滤where与having的区别:

  • where:使用where进行过滤是在分组之前进行过滤
  • having:使用having进行过滤必须在group by进行分组之后进行过滤

推荐使用where,高效

having示例
示例一:查询每个部门平均薪资,找出平均薪资高于2000的
select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;

执行顺序

from,where,group by ,having,select,order by

组内排序

substring_index函数的使用
语法格式:substring_index('要处理的字符串','分隔符',截取位置)
示例一:select substring_index('abcdaef','a',2);
结果为:abcd示例二:select substring_index(12342,2,2);
结果为:1234
group_concat函数的使用:

GROUP_CONCAT 是 MySQL 中强大的聚合函数,用于将分组后的多行数据合并成单个字符串。

示例:
SELECT department_id,GROUP_CONCAT(DISTINCT expr  -- 表达式ORDER BY .....SEPARATOR '; '                              -- 自定义分隔符) AS employees
FROM employees
GROUP BY department_id;

参数说明:

组件是否必需说明
DISTINCT可选去除重复值
expr必需要连接的表达式(列名、计算字段等),可多个:GROUP_CONCAT(col1, col2)
ORDER BY可选指定连接顺序:
• col_name:列名
• expr:表达式
• position:选择列位置(从1开始)
• ASC/DESC:排序方向
SEPARATOR可选指定连接分隔符(默认逗号,
示例:`SEPARATOR ’
'SEPARATOR '; '`
示例
示例一: select job,group_concat(empno) from emp group by job;解释:将每个职位(job)下的所有员工编号(empno)合并成单个字符串,默认用逗号分隔。结果:
+-----------+---------------------+
| job       | group_concat(empno) |
+-----------+---------------------+
| ANALYST   | 7788,7902           |
| CLERK     | 7369,7876,7900,7934 |
| MANAGER   | 7566,7698,7782      |
| PRESIDENT | 7839                |
| SALESMAN  | 7499,7521,7654,7844 |
+-----------+---------------------+
示例二:找出每个工作岗位的工资排名在前两名的编号代码: select job,substring_index(group_concat(empno),',',2) as empno  from emp group by job;结果:
+-----------+-----------+
| job       | empno     |
+-----------+-----------+
| ANALYST   | 7788,7902 |
| CLERK     | 7369,7876 |
| MANAGER   | 7566,7698 |
| PRESIDENT | 7839      |
| SALESMAN  | 7499,7521 |
+-----------+-----------+

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

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

相关文章

Windows11下搭建Raspberry Pi Pico编译环境

1. 系统与工具要求 PC平台: Windows 11 专业版 Windows GCC: gcc-15.1.0-64.exe GNU Make: 4.3 Git: 2.49.0 cmake: 4.0.2 python:3.12.11 Arm GNU Toolchain Downloads – Arm Developer 2. 工具安装与验证 2.1 工具安装 winget安装依赖工具(Windows …

【C语言极简自学笔记】重讲运算符

一、算术操作符 算术操作符描述把两个操作数相加-第一个操作数减去第二个操作数*把两个操作数相乘/分子除以分母%取模运算符,整除后的余数 注意:1.除号的两端都是整数的时候执行的是整数的除法,两端只要有一个浮点数,就执行浮点…

持续集成 CI/CD-Jenkins持续集成GitLab项目打包docker镜像推送k8s集群并部署至rancher

Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 之前是通过jar包在shell服务器上进行手动部署,麻烦且耗时。现通过Jenkins进行持续集成实现CI/CD。以test分支为例 提交即部署。 由于是根据自己实际使用过程 具体使用到了 gitlabjenkinsdockerharborra…

Apache Iceberg与Hive集成:非分区表篇

引言 在大数据处理领域,Apache Iceberg凭借其先进的表格式设计,为大规模数据分析带来了新的可能。当Iceberg与Hive集成时,这种强强联合为数据管理与分析流程提供了更高的灵活性和效率。本文将聚焦于Iceberg与Hive集成中的非分区表场景&#…

webpack 如何区分开发环境和生产环境

第一种方法: 方法出处:命令行接口(CLI) | webpack 中文文档 1.利用webpack.config.js 返回的是个函数,利用函数的参数,来区分环境 具体步骤 1) package.json文件:在npm scripts 命令后面追加 …

React组件通信——context(提供者/消费者)

Context 是 React 提供的一种组件间通信方式,主要用于解决跨层级组件 props 传递的问题。它允许数据在组件树中"跨级"传递,无需显式地通过每一层 props 向下传递。 一、Context 核心概念 1. 基本组成 React.createContext:创建 C…

“微信短剧小程序开发指南:从架构设计到上线“

1. 引言:短剧市场的机遇与挑战 近年来,短视频和微短剧市场呈现爆发式增长,用户碎片化娱乐需求激增。短剧小程序凭借轻量化、社交传播快、变现能力强等特点,成为内容创业的新风口。然而,开发一个稳定、流畅且具备商业价…

RPC与RESTful对比:两种API设计风格的核心差异与实践选择

# RPC与RESTful对比:两种API设计风格的核心差异与实践选择 ## 一、架构哲学与设计目标差异 1. **RPC(Remote Procedure Call)** - **核心思想**:将远程服务调用伪装成本地方法调用(方法导向) - 典型行为…

【pytest进阶】pytest之钩子函数

什么是 hook (钩子)函数 经常会听到钩子函数(hook function)这个概念,最近在看目标检测开源框架mmdetection,里面也出现大量Hook的编程方式,那到底什么是hook?hook的作用是什么? what is hook ?钩子hook,顾名思义,可以理解是一个挂钩,作用是有需要的时候挂一个东西…

深度学习计算——动手学深度学习5

环境:PyCharm python3.8 1. 层和块 块(block)可以描述 单个层、由多个层组成的组件或整个模型本身。 使用块进行抽象的好处: 可将块组合成更大的组件(这一过程通常是递归) 如 图5.1.1所示。通过定义代码来按需生成任意复杂度…

NodeJS的fs模块的readFile和createReadStream区别以及常见方法

Node.js 本身没有像 Java 那样严格区分字符流和字节流,区别主要靠编码(encoding)来控制数据是以 Buffer(二进制字节)形式还是字符串(字符)形式处理。 详细解释: 方面JavaNode.js字节…

基于二进制XOR运算的机器人运动轨迹与对称图像自动生成算法

原创:项道德(daode3056,daode1212) 新的算法出现,往往能给某些行业与产业带来革命与突破。为探索机器人运动轨迹与对称图像自动生成算法,本人已经通过18种算法的测试,最终,以二进制的XOR运算为…

Spring AI 项目实战(七):Spring Boot + Spring AI Tools + DeepSeek 智能工具平台(附完整源码)

系列文章 序号文章名称1Spring AI 项目实战(一):Spring AI 核心模块入门2Spring AI 项目实战(二):Spring Boot + AI + DeepSeek 深度实战(附完整源码)3Spring AI 项目实战(三):Spring Boot + AI + DeepSeek 打造智能客服系统(附完整源码)4Spring AI 项目实战(四…

spring-webmvc @RequestHeader 典型用法

典型用法 基础用法:获取指定请求头值 GetMapping("/info") public String getInfo(RequestHeader("User-Agent") String userAgent) {return "User-Agent: " userAgent; }如果请求中包含 User-Agent 请求头,则其值将被…

Ubuntu:20.04中安装docker

是的,您列出的命令是完整的安装步骤,但为了确保100%可靠性和处理可能的问题,我建议进行以下优化和补充: 完整优化的安装脚本(包含错误处理和验证) #!/bin/bash# 1. 彻底清理旧版本和配置 sudo apt remove…

大数据实时风控引擎:Spark Streaming、Kafka、Flink与Doris的融合实践

大数据实时风控引擎:Spark Streaming、Kafka、Flink与Doris的融合实践 在数字金融、电商交易与在线服务的核心战场,风险控制能力已成为业务的生命线。传统批量风控模式在应对瞬息万变的欺诈攻击、信用风险时捉襟见肘。本文将深入探讨如何利用**Spark St…

【创龙瑞芯微 RK3576 全国产 ARM 八核 2.2GHz 工业开发板-硬件说明书】

前 言 本文主要介绍TL3576-EVM评估板硬件接口资源以及设计注意事项等内容。 RK3576J/RK3576处理器的IO电平标准一般为1.8V、3.3V,上拉电源一般不超过3.3V或1.8V,当外接信号电平与IO电平不匹配时,中间需增加电平转换芯片或信号隔离芯片。按键或接口需考虑ESD设计,ESD器件…

一文吃透ADB,从入门到精通

目录 一、ADB 简介1.1 什么是 ADB1.2 ADB 的工作原理1.3 ADB 的安装与环境配置 二、ADB 基础命令2.1 设备连接相关命令2.2 应用管理命令2.3 文件传输命令 三、ADB 高级命令3.1 ADB Shell 深入探究3.2 日志查看与分析3.3 设备信息获取3.4 屏幕操作与录制 四、ADB 常见问题与解决…

PostgreSQL高可用架构设计与实践指南

# PostgreSQL高可用架构设计与实践指南 ## 一、高可用性核心诉求 PostgreSQL作为企业级关系型数据库,高可用设计需要满足以下关键指标: - 故障恢复时间(RTO):秒级到分钟级自动切换能力 - 数据损失容忍度&#xff0…

今天我想清楚了

首先说一声抱歉,很多天没有更新了,因为在我这里,我的内心感到迷茫,从来没有这样过,不知道为什么自己一直要做的事,进度太慢了,因为我的人生是空虚的,我感觉我做的不够好,…