一文读懂SQL中的Aggregate(聚合) 函数和Scalar(标准)函数

news2024/11/15 9:04:57

目录

前言:

一、SQL Aggregate 函数

1、AVG() 函数

2、count()函数

3、MAX() 函数

4、MIN() 函数

5、SUM() 函数

6、SQL GROUP BY 语法

7、SQL HAVING 子句

8、SQL EXISTS 运算符

9、SQL UNION 操作符

二、SQL Scalar 函数

1、SQL UCASE() 函数

2、SQL LCASE() 函数

3、SQL MID() 函数

4、SQL LEN() 函数

5、SQL ROUND() 函数

6、 SQL NOW() 函数

7、SQL FORMAT() 函数


前言:

SQL 拥有很多可用于计数和计算的内建函数。大致分为两类:SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。SQL Scalar 函数基于输入值,返回一个单一的值。

一、SQL Aggregate 函数

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

有用的 Aggregate 函数:

  • AVG() - 返回平均值
  • COUNT() - 返回行数
  • MAX() - 返回最大值
  • MIN() - 返回最小值
  • SUM() - 返回总和

1、AVG() 函数

AVG() 函数返回数值列的平均值。

从 "access_log" 表的 "count" 列获取平均值:

SELECT AVG(count) AS CountAverage FROM access_log;

选择访问量高于平均访问量的 "site_id" 和 "count":

SELECT site_id, count FROM access_log
WHERE count > (SELECT AVG(count) FROM access_log);

2、count()函数

COUNT() 函数返回匹配指定条件的行数。

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)

SELECT COUNT(column_name) FROM table_name;

COUNT(*) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_name;

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name;

计算 "access_log" 表中 "site_id"=3 的总访问量:

SELECT COUNT(count) AS nums FROM access_log
WHERE site_id=3;

计算 "access_log" 表中不同 site_id 的记录数:

SELECT COUNT(DISTINCT site_id) AS nums FROM access_log;

3、MAX() 函数

MAX() 函数返回指定列的最大值。

从 "Websites" 表的 "alexa" 列获取最大值:

SELECT MAX(alexa) AS max_alexa FROM Websites;

4、MIN() 函数

MIN() 函数返回指定列的最小值。

从 "Websites" 表的 "alexa" 列获取最小值:

SELECT MIN(alexa) AS min_alexa FROM Websites;

5、SUM() 函数

SUM() 函数返回数值列的总数。

查找 "access_log" 表的 "count" 字段的总数:

SELECT SUM(count) AS nums FROM access_log;

6、SQL GROUP BY 语法

GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组
统计 access_log 各个 site_id 的访问量:

SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;

统计有记录的网站的记录数量:

SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log
LEFT JOIN Websites
ON access_log.site_id=Websites.id
GROUP BY Websites.name;

7、SQL HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用,HAVING 子句可以让我们筛选分组后的各组数据

where 和having之后都是筛选条件,但是有区别的:

(1)where在group by前, having在group by 之后

(2)聚合函数(avg、sum、max、min、count),不能作为条件放在where之后,但可以放在having之后

查找总访问量大于 200 的网站

SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN Websites
ON access_log.site_id=Websites.id)
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

查找总访问量大于 200 的网站,并且 alexa 排名小于 200。

SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200 
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

8、SQL EXISTS 运算符

EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。

查找总访问量(count 字段)大于 200 的网站是否存在。

SELECT Websites.name, Websites.url 
FROM Websites 
WHERE EXISTS (SELECT count FROM access_log WHERE Websites.id = access_log.site_id AND count > 20

EXISTS 可以与 NOT 一同使用,查找出不符合查询语句的记录:

SELECT Websites.name, Websites.url 
FROM Websites 
WHERE NOT EXISTS (SELECT count FROM access_log WHERE Websites.id = access_log.site_id AND count > 200);

9、SQL UNION 操作符

SQL UNION 操作符合并两个或多个 SELECT 语句的结果。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

SQL UNION 语法

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

SQL UNION ALL 语法

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

注释UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

示例:

从 "Websites" 和 "apps" 表中选取所有不同的country(只有不同的值):

SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;

注释UNION 不能用于列出两个表中所有的country。如果一些网站和APP来自同一个国家,每个国家只会列出一次。UNION 只会选取不同的值。请使用 UNION ALL 来选取重复的值!

 

使用 UNION ALL 从 "Websites" 和 "apps" 表中选取所有的country(也有重复的值)

SELECT country FROM Websites
UNION ALL
SELECT country FROM apps
ORDER BY country;

 使用 UNION ALL 从 "Websites" 和 "apps" 表中选取所有的中国(CN)的数据(也有重复的值)

SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY country;

 


二、SQL Scalar 函数

SQL Scalar 函数基于输入值,返回一个单一的值。

有用的 Scalar 函数:

  • UCASE() - 将某个字段转换为大写
  • LCASE() - 将某个字段转换为小写
  • MID() - 从某个文本字段提取字符,MySql 中使用
  • SubString(字段,1,end) - 从某个文本字段提取字符
  • LEN() - 返回某个文本字段的长度
  • ROUND() - 对某个数值字段进行指定小数位数的四舍五入
  • NOW() - 返回当前的系统日期和时间
  • FORMAT() - 格式化某个字段的显示方式

1、SQL UCASE() 函数

UCASE() 函数把字段的值转换为大写。

从 "Websites" 表中选取 "name" 和 "url" 列,并把 "name" 列的值转换为大写:

SELECT UCASE(name) AS site_title, url
FROM Websites;

2、SQL LCASE() 函数

LCASE() 函数把字段的值转换为小写。

从 "Websites" 表中选取 "name" 和 "url" 列,并把 "name" 列的值转换为小写:

SELECT LCASE(name) AS site_title, url
FROM Websites;

3、SQL MID() 函数

MID() 函数用于从文本字段中提取字符

从 "Websites" 表的 "name" 列中提取前 4 个字符:

SELECT MID(name,1,4) AS ShortTitle
FROM Websites;

4、SQL LEN() 函数

LEN() 函数返回文本字段中值的长度。

从 "Websites" 表中选取 "name" 和 "url" 列中值的长度

SELECT name, LENGTH(url) as LengthOfURL
FROM Websites;

5、SQL ROUND() 函数

ROUND() 函数用于把数值字段舍入为指定的小数位数。

ROUND(X): 返回参数X的四舍五入的一个整数。

mysql> SELECT ROUND(-1.23);
        -> -1
mysql> SELECT ROUND(-1.58);
        -> -2
mysql> SELECT ROUND(1.58);
        -> 2

ROUND(X,D): 返回参数X的四舍五入的有 D 位小数的一个数字。如果D为0,结果将没有小数点或小数部分。

mysql> SELECT ROUND(1.298, 1);
        -> 1.3
mysql> SELECT ROUND(1.298, 0);
        -> 1

6、 SQL NOW() 函数

NOW() 函数返回当前系统的日期和时间。

从 "Websites" 表中选取 name,url,及当天日期:

SELECT name, url, Now() AS date
FROM Websites;

7、SQL FORMAT() 函数

FORMAT() 函数用于对字段的显示进行格式化。

从 "Websites" 表中选取 name, url 以及格式化为 YYYY-MM-DD 的日期:

SELECT name, url, DATE_FORMAT(Now(),'%Y-%m-%d') AS date
FROM Websites;

 

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

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

相关文章

Swift 周报 第三十二期

文章目录 前言新闻和社区现已提供新的设计资源visionOS SDK 现已发布 提案Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组自主整理周报的第二十三期&#xff0c;每个模块已初步成型。各位读者如果有好的提议&#xff0c;欢迎在文末留言。 欢迎投稿或推荐内容。…

力扣 -- 174. 地下城游戏

题目链接&#xff1a;174. 地下城游戏 - 力扣&#xff08;LeetCode&#xff09; 下面是用动态规划的思想解决这道题的过程&#xff0c;相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 参考代码&#xff1a; class Solution { public:int calculateMinimumHP(vector&…

【上海海事大学806】23上岸学姐经验分享

今天很荣幸请到了一位23上岸上海海事大学的学姐来给大家做一期经验分享&#xff01;&#xff01;&#xff01;我之前也有做过关于上海海事大学806的一些真题解析以及重点勾画&#xff0c;希望能帮到大家&#xff0c; 一、学姐经验分享 很荣幸你能看到我的考研经验分享&#x…

第七章 版本控制器——git

第七章 版本控制器——git 一、git的历史二、git的特点与发展1、git的特点2、git与github 二、git的安装与注册1、git的安装2、git的使用&#xff08;1&#xff09;github注册&#xff08;2&#xff09;创建远端仓库&#xff08;3&#xff09;将远端仓库镜像复制到本地仓库指令…

LIS实验室信息管理系统功能模块(Oracle数据库、Client/Server架构)

一、系统框架简介 1、技术框架 &#xff08;1&#xff09;总体框架&#xff1a; ♦SaaS架构的Client/Server应用 ♦服务可伸缩&#xff0c;多服务协同 ♦服务可拆分&#xff0c;功能易扩展 &#xff08;2&#xff09;技术细节&#xff1a; ♦体系结构&#xff1a;Client/Serv…

零基础小白暑假QT实训1

一.前言 今天就要开始暑假短学期的实训了&#xff0c;本来课堂也要求记笔记&#xff0c;这里我就开始分享我将来五天的学习过程吧。 二.QT安装过程 首先&#xff0c;提供一下我的链接&#xff1a; 本来上传到我的阿里云盘了的&#xff0c;结果压缩包不给分享&#xff0c;抱歉…

互联网高可用架构探讨 | 京东云技术团队

高可用指标与问题 高可用&#xff0c;英文单词High Availability&#xff0c;缩写HA&#xff0c;它是分布式系统架构设计中一个重要的度量。业界通常用多个9来衡量系统的可用性&#xff0c;如下表&#xff1a; 既然有可用率&#xff0c;有一定会存在不可用的情况。系统宕机一般…

【动态规划上分复盘】下降路径最小和|礼物的最大价值

欢迎 前言一、动态规划五部曲二、下降路径最小和思路&#xff1a;动态规划解法具体代码如下 三、礼物的最大价值思路&#xff1a;动态规划具体代码如下: 总结 前言 本文主要讲述动态规划思路的下降路径最小和以及礼物的最大价值两道题。 一、动态规划五部曲 1.确定状态表示&a…

61. 旋转链表

61. 旋转链表 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 旋转链表 https://leetcode.cn/problems/rotate-list/ 完成情况&#xff1a; 解题思路&#xff1a; 参考代码&#xff1a; package 西湖算法题解_…

【C语言】指针进阶[中](函数指针、函数指针数组、指向函数指针数组的指针)

简单不先于复杂&#xff0c;而是在复杂之后。 目录 1. 函数指针 1.1 函数指针的用途 2. 函数指针数组 3. 指向函数指针数组的指针 1. 函数指针 这里的 * 可以省略: 因为函数指针本质上是一个指针&#xff0c;存储了一个函数的地址&#xff0c;因此可以通过函数指针调用对…

解锁虚拟人IP“悦小满”新玩法,怎么用动捕设备化身多重身份?

在数字时代&#xff0c;虚拟人IP成为文化产业与数字技术、数字平台相融合的产物。虚拟人IP是文化IP文化产业发展的新内核。 广东网络广播电视台顺应时代发展&#xff0c;推出了全球首个粤语虚拟偶像“悦小满”&#xff0c;具备着Z世代所喜爱的2.5次元的3D虚拟形象&#xff0c;…

React 企业级开发必备, 我来带你快速入门 !

目录 一、为什么我来安利你学习 React? 二、使用 React 的前置工作 三、简易 demo 学开发 3.1、jsx语法 3.2、函数式组件 demo 3.3、简单类组件定义 3.4、复杂类组件定义 3.4.1、state 写法一&#xff1a;复杂式 写法二&#xff1a;简便式 3.4.2、props 类型限制…

界面干净整洁的windows桌面清单软件有哪些

无论是工作还是日常生活&#xff0c;我们都有各种各样的任务需要完成。然而&#xff0c;如果不进行有效的规划和管理&#xff0c;很容易导致遗漏和拖延&#xff0c;影响工作效率。而一个界面干净整洁的Windows桌面清单&#xff0c;能够帮助我们更好地规划和安排待办事项&#x…

优雅编码:WebStorm引领你迈向开发巅峰

目录 引言WebStrom的优点WebStorm的缺点自用插件推荐总结&#xff1a; WebStorm 官网 引言 WebStorm 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了许多功能和工具&#xff0c;帮助开发人员优雅编码。 因为我是一个前端开发工程师&#xff0c;…

力扣 -- 面试题 17.16. 按摩师

题目链接&#xff1a;面试题 17.16. 按摩师 - 力扣&#xff08;LeetCode&#xff09; 下面是用动态规划的思想解决这道题的过程&#xff0c;相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 参考代码&#xff1a; class Solution { public:int massage(vector<int…

哪款恢复数据的软件好用,数据恢复成功率高吗

我们的日常工作中免不了出现误删或者因为系统崩溃而丢失重要的文件的情况&#xff0c;这些文件的丢失会对我们的工作生活造成或多或少的损失。其实我们可以利用一些专业的软件来恢复这些丢失的数据。 许多网友会有疑问&#xff0c;哪款恢复数据的软件好用&#xff0c;数据恢复成…

2021-04-29 VSC++:吻合日。

缘由https://bbs.csdn.net/topics/399168383 void 吻合日() {//缘由https://bbs.csdn.net/topics/399168383int n 0, n1 0, y 0, y1 0, h 0, h1 0,z 0, j 0, x 0, t 0;std::cin >> n >> y >> h;z 自适年一月一日周一值(n) h;y1 y; t 返回月的…

Devops之制品库平台实践-nexus

Devops之制品库平台实践-nexus 目录 本节实践 实战名称&#x1f498; 实践&#xff1a;配置Maven代理仓库(测试成功)-2022.6.7&#x1f498; 实践&#xff1a;创建Maven本地仓库&#xff08;依赖&#xff09;-2022.6.10(测试成功)&#x1f498; 实践&#xff1a;创建Raw本地仓…

Java模拟OPC Server服务器并创建节点代码实现

前言 模拟OPC Server服务器的方法除了使用KEPServerEX6软件以外&#xff0c;还可以使用java代码模拟启动一个opc server。下文详细讲解&#xff0c;如何使用java代码&#xff0c;实现模拟一个或者多个opc server服务器。 引入依赖 首先在Maven项目的pom.xml文件中引入所需的…

量水堰计的作用是什么有什么特点

水库大坝安全监测中&#xff0c;渗流监测是一个重要的组成部分。量水堰计作为一种测量流量的仪器&#xff0c;在渗流监测中起着至关重要的作用。其工作原理是&#xff0c;在进水口处设置量水堰&#xff0c;量水堰上安装有磁致伸缩液位传感器&#xff0c;可以实时记录通过量水堰…