sql中的聚合函数

SQL中的聚合函数用于对表中的数据进行汇总计算,常用来生成统计信息,例如总和、平均值、最大值、最小值等。它们通常与GROUP BY子句一起使用,以对数据分组后再计算聚合结果。

以下是SQL中常用的聚合函数及其详细讲解:


1. COUNT( )

功能: 统计记录的数量。

  • 语法:

    sql

    SELECT COUNT(column_name) FROM table_name;

  • 应用场景:

    • COUNT(*):统计所有行的数量(包括NULL值)。
    • COUNT(column_name):统计指定列中非NULL值的数量。
  • 示例:

     

    sql

    SELECT COUNT(*) AS total_rows FROM employees;

    返回employees表中的总行数。

     

    sql

    SELECT COUNT(department_id) AS valid_departments FROM employees;

    返回department_id列中非NULL值的数量。


2. SUM( )

功能: 计算数值列的总和。

  • 语法:

     

    sql

    SELECT SUM(column_name) FROM table_name;

  • 注意事项:

    • 只能对数值列使用。
    • 如果列中全是NULL,结果为NULL
  • 示例:

     

    sql

    SELECT SUM(salary) AS total_salary FROM employees;

    返回employees表中salary列的总和。

     

    sql

    SELECT department_id, SUM(salary) AS department_salary FROM employees GROUP BY department_id;

    按部门汇总工资。


3. AVG( )

功能: 计算数值列的平均值。

  • 语法:

     

    sql

    SELECT AVG(column_name) FROM table_name;

  • 注意事项:

    • SUM类似,仅适用于数值列。
    • 自动忽略NULL值。
  • 示例:

     

    sql

    SELECT AVG(salary) AS average_salary FROM employees;

    返回员工的平均工资。

     

    sql

    SELECT department_id, AVG(salary) AS average_salary FROM employees GROUP BY department_id;

    按部门计算平均工资。


4. MAX( )

功能: 获取列中的最大值。

  • 语法:

     

    sql

    SELECT MAX(column_name) FROM table_name;

  • 注意事项:

    • 适用于数值、日期和字符串列。
    • 忽略NULL值。
  • 示例:

     

    sql

    SELECT MAX(salary) AS highest_salary FROM employees;

    返回最高工资。

     

    sql

    SELECT MAX(hire_date) AS latest_hire_date FROM employees;

    返回最新的入职日期。


5. MIN( )

功能: 获取列中的最小值。

  • 语法:

     

    sql

    SELECT MIN(column_name) FROM table_name;

  • 注意事项:

    • MAX类似,适用于数值、日期和字符串列。
    • 忽略NULL值。
  • 示例:

     

    sql

    SELECT MIN(salary) AS lowest_salary FROM employees;

    返回最低工资。

     

    sql

    SELECT MIN(hire_date) AS earliest_hire_date FROM employees;

    返回最早的入职日期。


6. GROUP BY 和 聚合函数配合使用

聚合函数常与GROUP BY结合,按分组计算聚合值。

  • 示例:
     

    sql

    SELECT department_id, SUM(salary) AS total_salary FROM employees GROUP BY department_id;

    按部门汇总工资。


7. HAVING 子句

当使用聚合函数筛选分组结果时,需要使用HAVING,而不是WHERE

  • 示例:
     

    sql

    SELECT department_id, SUM(salary) AS total_salary FROM employees GROUP BY department_id HAVING SUM(salary) > 50000;

    SELECT department_id, SUM(salary) AS total_salary FROM employees GROUP BY department_id HAVING SUM(salary) > 50000;

    筛选出工资总和超过50000的部门。


8. 注意事项:

  • 聚合函数忽略NULL值(除了COUNT(*))。
  • 如果在SELECT中使用普通列,必须同时出现在GROUP BY中,否则会报错。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跨平台WPF框架Avalonia教程 十三

AutoCompleteBox 自动补全输入框 自动补全输入框提供了一个供用户输入的文本框和一个包含可能匹配项的下拉列表。下拉列表会在用户开始输入时显示,并且每输入一个字符,匹配项都会更新。用户可以从下拉列表中选择匹配项。 文本与可能项匹配的方式是可配…

MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk)

MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk) 1.计算模型介绍 使用GARCH(广义自回归条件异方差)模型计算VaR(风险价值)时,方差法是一个常用的方法。GARCH模型能够捕捉到金融时间序列数据中的波…

力扣 LeetCode 513. 找树左下角的值(Day8:二叉树)

解题思路: 方法一:递归法(方法二更好理解,个人更习惯方法二) 前中后序均可,实际上没有中的处理 中左右,左中右,左右中,实际上都是左在前,所以遇到的第一个…

Nuget For Unity插件介绍

NuGet for Unity:提升 Unity 开发效率的利器 NuGet 是 .NET 开发生态中不可或缺的包管理工具,你可以将其理解为Unity的Assets Store或者UPM,里面有很多库可以帮助我们提高开发效率。当你想使用一个库,恰好这个库没什么依赖(比如newtonjson),那么下载包并找到Dll直接…

“乐鑫组件注册表”简介

当启动一个新的开发项目时,开发者们通常会利用库和驱动程序等现有的代码资源。这种做法不仅节省时间,还简化了项目的维护工作。本文将深入探讨乐鑫组件注册表的概念及其核心理念,旨在指导您高效地使用和贡献组件。 概念解析 ESP-IDF 的架构…

药房革新:Spring Boot中药实验管理系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

嵌入式 UI 开发的开源项目推荐

嵌入式开发 UI 难吗?你的痛点我懂!作为嵌入式开发者,你是否也有以下困扰?设备资源太少,功能和美观只能二选一?调试效率低,每次调整都要反复烧录和测试?开发周期太长,让你…

CTF--php伪协议结合Base64绕过

Base64绕过 在ctf中,base64是比较常见的编码方式,在做题的时候发现自己对于base64的编码和解码规则不是很了解,并且恰好碰到了类似的题目,在翻阅了大佬的文章后记录一下,对于base64编码的学习和一个工具 base64编码是…

基于Java Springboot电影播放平台

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

国标GB28181摄像机接入EasyGBS国标GB28181设备管理软件:GB28181-2022媒体传输协议解析

随着信息技术的飞速发展,视频监控领域正经历从传统安防向智能化、网络化安防的深刻转变。在这一转变过程中,国标GB28181设备管理软件EasyGBS成为了这场技术变革的重要一环。 GB28181-2022媒体传输协议 媒体传输命令包括实时视音频点播、历史视音频回放/…

Redis-monitor安装与配置

0、前言 压测环境因为隔离原因没法直接查看redis日志跟性能指数,只能通过监控工具查看,使用开源redis-montor监控查看 开源地址: GitCode - 全球开发者的开源社区,开源代码托管平台 1、python环境准备(python -v有的忽略&#xff…

windows basic语言学习笔记,批处理命令的简单使用

BAT学习笔记 前言 Windows 命令行中对参数的大小写不敏感,因此 /D 和 /d 的效果完全一致。 1. 代码1:创建目录并复制文件 源代码: echo off REM 创建目标目录,如果不存在 if not exist "C:\h2" (mkdir "C:\h2&q…

5-对象的访问权限

对象的访问权限知识点 对象的分类 在数据库中,数据库的表、索引、视图、缺省值、规则、触发器等等、都可以被称为数据库对象,其中对象主要分为两类 1、模式(schema)对象:模式对象可以理解为一个存储目录、包含视图、索引、数据类型、函数和…

Java Database Connectivity (JDBC + Servlet)

Java Database Connectivity (JDBC)是一个Java API,用于与数据库进行连接和操作。通过JDBC,Java程序可以与各种关系型数据库进行通信,执行SQL查询、更新数据等操作。 一、Java连接数据库两种方式 ​​​​​ ​​ 二、Java中…

[Realtek sdk-3.4.14b] RTL8197FH-VG新增jffs2分区操作说明

sdk说明 ** Gateway/AP firmware v3.4.14b – Aug 26, 2019**  Wireless LAN driver changes as:  Refine WiFi Stability and Performance  Add 8812F MU-MIMO  Add 97G/8812F multiple mac-clone  Add 97G 2T3R antenna diversity  Fix 97G/8812F/8814B MP issu…

鸿蒙多线程开发——线程间数据通信对象01

1、线程间通信 线程间通信指的是并发多线程间存在的数据交换行为。由于ArkTS语言兼容TS/JS,其运行时的实现与其它所有的JS引擎一样,都是基于Actor内存隔离的并发模型提供并发能力。 对于不同的数据对象,在ArkTS线程间通信的行为是有差异的&…

基于单片机的多功能跑步机控制系统

本设计基于单片机的一种多功能跑步机控制系统。该系统以STM32单片机为主控制器,由七个电路模块组成,分别是:单片机模块、电机控制模块、心率检测模块、音乐播放模块、液晶显示模块、语音控制模块、电源模块。其中,单片机模块是整个…

测试工程师如何在面试中脱颖而出

目录 1.平时工作中是怎么去测的? 2.B/S架构和C/S架构区别 3.B/S架构的系统从哪些点去测? 4.你为什么能够做测试这一行?(根据个人情况分析理解) 5.你认为测试的目的是什么? 6.软件测试的流程&#xff…

PHM技术:基于支持向量机的智能故障诊断 | 行星齿轮箱智能故障诊断

目录 1.数据获取 2.特征提取与选择 3.健康状态识别 1.数据获取 用的行星齿轮箱数据采集自图1中的多级齿轮传动系统实验台中,在实验过程中,分别模拟了8种行星齿轮箱的健康状态,包括正常、第一级太阳轮点蚀、第一级太阳轮齿根裂纹、第一级…

【划分型 DP-约束划分个数】【hard】【阿里笔试】力扣1278. 分割回文串 III

给你一个由小写字母组成的字符串 s,和一个整数 k。 请你按下面的要求分割字符串: 首先,你可以将 s 中的部分字符修改为其他的小写英文字母。 接着,你需要把 s 分割成 k 个非空且不相交的子串,并且每个子串都是回文串…