SQL | 汇总数据

9-汇总数据

9.1-聚集函数

在实际开发过程中,可能会遇到下面这些情况:

  • 确定大于某个值的有多少行数据,比如游戏排行榜,查询玩家排行多少名。

  • 获取表中某些行的和,比如双十一当天,某个用户总订单价格是多少元。

  • 获取表中最大值,最小值,平均值。

上述这些例子只需要返回统计后的数值,而不需要返回所有数值,然后在进行统计,这么做节省了时间,提高了效率。

为了方便做类似上述例子的操作,SQL给出了五个函数。

 

9.1.1 avg()函数

avg()函数的执行过程:先对表中行数进行计算,然后求得某列的和,最后求取平均值。

例如:返回products表中的平均价格

select avg(prod_price) as avg_price
from products;

avg()也可以结合WHERE子句来确定特定的列或者行的平均值。

select avg(prod_price) as avg_price
from products
where vend_id = 'DLL01';

 

上述SQL语句是仅过滤供应商为‘DLL01’的产品的价格的平均值。

只用于单个列 AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数。

注意:avg函数会忽略列值为NULL的行。

9.1.2 count()函数

count()函数是用来计数的。可利用count()确定表中行的数目或者符合规定的行的数目。

  • 使用count(*) 对表中行的数目进行计数,不管表列中包含的是空值NULL还是非空值。

  • 使用count(column)对特定列中具有值的行进行计数。忽略NULL值。

select count(*) as num_cust
from customers;

 

上述SQL语句查询customers表中的顾客总数。count(*)对所有具有值的行进行计数,计算得到的值在num_cust中返回。

select count(cust_email) as num_cust
from customers;

 

上述SQL语句用于统计顾客表中拥有邮箱的顾客有多少,主动忽略了NULL值。

NULL值 如果指定列名,则COUNT()函数会忽略指定列的值为NULL的行,但如果COUNT()函数中用的是星号(*),则不忽略。

9.1.3 max()函数

max()函数返回指定列中的最大值。max()函数要指定列名。

select max(prod_price) as max_price
from products;

 

上述SQL语句是查询产品列表中价格最高的产品。

max()函数一般用来找出最大的数值或者日期,但是有许多DBMS允许它返回任意列中的最大值,包括返回文本列中的最大值。当max()函数用于返回文本最大值时,返回按该列排序的最后一行。

max()函数忽略值为NULL的行。

9.1.4 min()函数

与max()函数相反,min()函数返回指定列的最小值。min()函数要求指定列名。

select min(prod_price) as min_price
from products;

 

min()函数一般用来找出最小的数值或者日期,但是有许多DBMS允许它返回任意列中的最小值,包括返回文本列中的最小值。当min()函数用于返回文本最小值时,返回按该列排序的最前面的行。

min()函数忽略NULL值所在的行。

9.1.5 sum()函数

sum()函数用来返回指定列值的总和。

例如:orderitems表中包含订单中实际的物品,每个物品有相应的数量,由此计算所订购的物品的总数。

select sum(quantity) as items_ordered
from orderitems
where order_num = 20005;

 

上述SQL语句用于返回总的物品数量,一共是200个。

函数SUM(quantity)返回订单中所有物品数量之和,WHERE子句保证只统计某个物品订单中的物品。

sum()也可以用来合计计算值。

select sum(item_price*quantity) as total_price
from orderitems
where order_num = 20005;

 

上述SQL语句计算所有符合条件的价值的总和。

sum()函数忽略列值为NULL的行。

9.2-聚集不同值

上述五种聚集函数都可以按照下面的方式使用:

  • 对所有行执行计算,指定all参数或不指定参数(因为all是默认行为)。

  • 只包含不同的值,指定distinct

注意:all参数不需要指定,它是默认行为。如果不指定distinct,则假定为all。

下面举例说明指定distinct参数,而不使用默认参数。

select avg(distinct prod_price) as avg_price
from products
where vend_id = 'DLL01';

 

因为使用了distinct参数,所以计算平均值的时候自动忽略相同的价格去计算平均值。但是计算后高于上面我们计算的平均价格,这是因为数量虽然少了,但是价格低的物品数量也少了。

另外,distinct不能用于count(*),但是可以用于指定列名的count(),也就是说:如果想要使用distinct,就必须指定列名。

distinct可以用于min()和max(),但是毫无意义,因为只有一行。

9.3-组合聚集函数

select语句可以根据需要选择多个聚合函数。

select count(*) as num_items,min(prod_price) as price_min,max(prod_price) as price_max,avg(prod_price) as price_avg
from products;

 

上述SQL语句返回products表中物品数量,产品价格最高,产品价格最低以及平均值。

练习

  1. 编写SQL语句,确定已售出产品的总数(使用OrderItems中的quantity列)。

    select sum(quantity) as selled
    from orderitems;

     

  2. 修改刚刚创建的语句,确定已售出产品项(prod_id)BR01的总数。

    select sum(quantity) as selled
    from orderitems
    where prod_id = 'BR01';

     

  3. 编写SQL语句,确定Products表中价格不超过10美元的最贵产品的价格(prod_price)。将计算所得的字段命名为max_price。

    select max(prod_price) as max_price
    from products
    where prod_price <= 10;

     

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

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

相关文章

学习篇之React Fiber概念及原理

什么是React Fibber&#xff1f; React Fiber 是 React 框架的一种底层架构&#xff0c;为了改进 React 的渲染引擎&#xff0c;使其更加高效、灵活和可扩展。 传统上&#xff0c;React 使用一种称为堆栈调和递归算法来处理虚拟 DOM 的更新&#xff0c;这种方法在大型应用或者…

最强自动化测试框架Playwright(7)- 使用cookie避免重复登录

playwright在称为浏览器上下文的隔离环境中执行测试。这种隔离模型提高了可重复性&#xff0c;并防止了级联测试失败。测试可以加载现有的经过身份验证的状态。这消除了在每次测试中进行身份验证的需要&#xff0c;并加快了测试执行速度。 每次测试前登录 以下示例登录到 Git…

谈谈什么是云计算?以及它的应用

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 ​编辑 一、什么是云计算 二、云计算的优势与劣势&#xff1f; 1、云计算的优势 ①提高资源利用率 ②提升效率 ③降低成本 2、云…

python编程基础与案例集锦,python编程入门经典

大家好&#xff0c;本文将围绕python编程基础与案例集锦展开说明&#xff0c;python编程入门与案例详解是一个很多人都想弄明白的事情&#xff0c;想搞清楚python入门程序例子需要先了解以下几个事情。 【程序1】 题目&#xff1a;输入一行字符&#xff0c;分别统计出其中英文字…

射频入门知识-混频器-1

5.4混频电路-视频_哔哩哔哩_bilibili ​​​​​​​

【算法题】螺旋矩阵II (求解n阶Z形矩阵)

一、问题的提出 n阶Z形矩阵的特点是按照之(Z)字形的方式排列元素。n阶Z形矩阵是指矩阵的大小为nn&#xff0c;其中n为正整数。 题目描述 一个 n 行 n 列的螺旋(Z形)矩阵如图1所示&#xff0c;观察并找出填数规律。 图1 7行7列和8行8列的螺旋(Z形)矩阵 现在给出矩阵大小 n&…

数据结构入门:栈

目录 前言 1. 栈 1.1栈的概念及结构 1.2 栈的实现 1.2.1 栈的定义 1.2.2 栈的初始化 1.2.3 入栈 1.2.4 出栈 1.2.5 栈的元素个数 1.2.6 栈顶数据 1.2.7 栈的判空 2.栈的应用 2.1 题目一&#xff1a;括号匹配 2.1.1 思路 2.1.2 分析 2.1.3 题解 总结 前言 无论你是计算机科学专…

用chatGPT从左右眼图片生成点云数据

左右眼图片 需求 需要将左右眼图像利用视差生成三维点云数据 先问问chatGPT相关知识 进一步问有没有现成的软件 chatGPT提到了OpenCV&#xff0c;我们让chatGPT用OpenCV写一个程序来做这个事情 当然&#xff0c;代码里面会有一些错误&#xff0c;chatGPT写的代码并不会做模…

【JavaEE进阶】Spring 更简单的读取和存储对象

文章目录 一. 存储Bean对象1. 配置扫描路径2. 添加注解存储 Bean 对象2.1 使用五大类注解存储Bean2.2 为什么要有五大类注解&#xff1f;2.3 有关获取Bean参数的命名规则 3. 使用方法注解储存 Bean 对象3.1 方法注解储存对象的用法3.2 Bean的重命名3.3 同⼀类型多个 Bean 报错 …

Spring Boot单元测试与Mybatis单表增删改查

目录 1. Spring Boot单元测试 1.1 什么是单元测试? 1.2 单元测试有哪些好处? 1.3 Spring Boot 单元测试使用 单元测试的实现步骤 1. 生成单元测试类 2. 添加单元测试代码 简单的断言说明 2. Mybatis 单表增删改查 2.1 单表查询 2.2 参数占位符 ${} 和 #{} ${} 和 …

学点Selenium玩点新鲜~,让分布式测试有更多玩法

前 言 我们都知道 Selenium 是一款在 Web 应用测试领域使用的自动化测试工具&#xff0c;而 Selenium Grid 是 Selenium 中的一大组件&#xff0c;通过它能够实现分布式测试&#xff0c;能够帮助团队简单快速在不同的环境中测试他们的 Web 应用。 分布式执行测试其实并不是一…

小米平板6Max14即将发布:自研G1 电池管理芯片,支持33W反向快充

明天晚上7点&#xff08;8 月 14 日&#xff09;&#xff0c;雷军将进行年度演讲&#xff0c;重点探讨“成长”主题。与此同时&#xff0c;小米将推出一系列全新产品&#xff0c;其中包括备受瞩目的小米MIX Fold 3折叠屏手机和小米平板6 Max 14。近期&#xff0c;小米官方一直在…

分布式搜索ElasticSearch-ES(一)

一、ElasticSearch介绍 ES是一款非常强大的开源搜索引擎&#xff0c;可以帮我们从海量的数据中快速找到我们需要的内容。 ElasticSearch结合kibana、Logstash、Beats&#xff0c;也就是elastic stack(ELK)&#xff0c;被广泛运用在日志数据分析&#xff0c;实时监控等领域。 …

Ajax 笔记(二)—— Ajax 案例

笔记目录 2. Ajax 综合案例2.1 案例一-图书管理2.1.1 渲染列表2.1.2 新增图书2.1.3 删除图书2.1.4 编辑图书 2.2 案例二-背景图的上传和更换2.2.1 上传2.2.2 更换 2.3 案例三-个人信息设置2.3.1 信息渲染2.3.2 头像修改2.2.3 信息修改2.3.4 提示框 Ajax 笔记&#xff1a; Ajax…

React Native 列表组件基础知识

ScrollView 组件 ScrollView组件是一个容器滚动组件&#xff0c;当容器超出指定宽高时就可以进行滚动交互。 ScrollView组件是一次性渲染所有的 React 子组件&#xff0c;这在性能上是比较差的&#xff0c;所以不建议当列表特别长的时候使用此组件。 接下来列举几个常用的一…

HTML(JavaEE初级系列12)

目录 前言&#xff1a; 1.HTML结构 1.1认识HTML标签 1.2HTML文件基本结构 1.3标签层次结构 1.4快速生成代码框架 2.HTML常见标签 2.1注释标签 2.2标题标签&#xff1a;h1-h6 2.3段落标签&#xff1a;p 2.4换行标签&#xff1a; br 2.5格式化标签 2.6图片标签&#…

【详细教程】学会使用Python隧道代理

作为一名专业爬虫程序猿&#xff0c;我深知在进行网络数据采集时&#xff0c;可能会面临网络封锁、隐私泄露等问题。今天&#xff0c;我将与大家分享如何学会使用Python隧道代理&#xff0c;帮助我们自由访问受限网站&#xff0c;同时保护了解探索Python隧道代理&#xff01; …

3.1 Spring MVC概述

1. MVC概念 MVC是一种编程思想&#xff0c;它将应用分为模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;、控制器&#xff08;Controller&#xff09;三个层次&#xff0c;这三部分以最低的耦合进行协同工作&#xff0c;从而提高应用的可扩展性及可维护…

解开谜团:为什么红黑树胜过AVL树?

为什么红黑树胜过AVL树 博主简介一、引言1.1、红黑树和AVL树简介1.2、红黑树在某些方面优于AVL树 二、红黑树和AVL树的基本原理2.1、红黑树的定义和性质2.2、AVL树的定义和性质2.3、对比两种树结构的特点 三、插入和删除操作的复杂性比较3.1、红黑树的插入操作和平衡性维护3.2、…

【Bert101】变压器模型背后的复杂数学【02/4】

一、说明 众所周知&#xff0c;变压器架构是自然语言处理&#xff08;NLP&#xff09;领域的突破。它克服了 seq-to-seq 模型&#xff08;如 RNN 等&#xff09;无法捕获文本中的长期依赖性的局限性。变压器架构被证明是革命性架构&#xff08;如 BERT、GPT 和 T5 及其变体&…