聚合函数和group by的关系详解
作者:方觉夏 发布时间:2024-01-20 15:19:53
前言
world:世界表格
continent:大洲名称
name:国家名称
population:人口数量
聚合函数介绍
sum() | 求和函数 |
---|---|
avg() | 求平均值函数 |
max() | 求最大值函数 |
min() | 求最小值函数 |
count() | 求行数函数 |
group by介绍
group up + 字段名:规定哪个字段分组聚合
在单独使用使用时,作用为分组去重 结果与distinct一样,但是逻辑并不一样:先对字段值相同的分为一个区,再将同区的拿出来进行分组,对应多少值就分多少组。分组就是将相同的字段进行剔除。简单来说,就是打破了表格的格式生成了一张新的表格。
例如在上面这张表格就是执行group up后形成的分区结果,将相同的字段值分在了一起。下面的表格即是执行group by分组的结果,基于上面分区的结果,进行了去重的分组。
解释聚合函数和group by的关系
那么为什么使用group by会形成这样的结果呢?我们可以使用上聚合函数进行分析原因,执行下面一句SQL代码。
select continent,count(name) from world group by continent
结果为
那么我们试着将group by continent和continent去掉,得到以下结果
结果执行后查询出来 count(name) 就只是所有 name 这一列的行数的总合,并不能将每个大洲(continent)进行分组统计出来每个大洲所有国家(name)的数量。
这就是聚合函数和group by联合使用的作用,帮助聚合函数找到分组后的表格进行计算,在这一句
select continent,count(name) from world group by continent
SQL语句中是先进行了group by的分组,在进行select continent,最后在进行count(name),基于的就是group by后的分组进行计算。
我们可以将continent的字段名删除,查看结果是否统一,作为印证。
很明显我们无论有没有将continent进行显示,结果都是一样的。
通过这次测试,我们就可以得出相对应的结论:在group up执行的时候,就已经将表格生成出来了,select只是选择展示和不展示出来而已,对于结果并没有影响。而聚合函数的作用就是在生成出来新的表格内进行计算,舍弃了没有进行分组的表格。
使用group by和聚合函数需要注意的地方
在使用group up子句时,select只能使用聚合函数和group up引用的字段,否则会报错!
尝试执行下列SQL语句:
select continent,count(name),population from world group by continent
为什么会出现报错呢,因为在这句SQL语句中,group by已经先运行了,所以select不能出现在group by中没有的字段,只能基于在聚合依据的这个表中进行字段匹配。
来源:https://blog.csdn.net/thetheflower/article/details/122267999


猜你喜欢
- 前言xml课的第三第四个作业都是用java编程来实现xml dom的一些转换, 因为自己没怎么学过java,因此和老师说了下想用python
- rs.open sql,conn:如果sql是delete,update,insert则会返
- CUDACUDA是显卡厂商NVIDIA推出的运算平台。CUDA™是一种由NVIDIA推出的通用并行计算架构,是一种并行计
- 往期学习:python数据类型: python数据结构:数据类型.python的输入输出: python数据结构之输入输出及控制和异常.py
- 引言https://github.com/go-chassis/go-chassis是一个微服务开发框架,而微服务开发框架带来的其中一个课题
- 什么是ASP,它能干什么? 一、什么是ASP? 从字面上说,ASP包含三方面含义: 1、Active:ASP使用了Microsoft的Act
- 实战场景本篇博客为大家介绍一款新的自动化测试工具,效果类似 selenium,但是这个模块年轻。模块名称为 playwright-pytho
- 众所周知,Python中常常按照key、value的形式来遍历字典的items。若value是基本数据类型(int,float等),则是传的
- 那就废话不多说,直接上代码吧!new_array = np.zeros((107,4))# 共107行 每行4列 初值为0>>&
- 相对于http协议,http是的特点就是他的安全性,http协议的通信内容用普通的嗅探器可以捕捉到,但是https协议的内容嗅探到的是加密后
- 哪行哪业都少不了基本功,都说“马步”要扎得稳。在都快说烂了的以目标用户为中心设计的今天,还是要勤练基本功的。不多说了,先了解下“设计的3个C
- composer是PHP中非常优秀的一个包管理工具,可以帮助我们来管理项目所需要依赖的所有包以及插件,也可以用来从packagist中创建一
- 问题一个球从 100 米高的自由落下,每次落地后反跳回原高度的一半。求第10次弹起的高度与途径的总路程什么是递归函数函数的递归调用是函数嵌套
- MySQL Select语句是怎么执行的? 最近在极客时间看丁奇大佬的《MySQL45讲》,真心觉得讲的不错,把其中
- 一、新建项目,在主配置文件中,修改以下内容:ALLOWED_HOSTS = ['127.0.0.1','localh
- <% Dim aData aData = Array(3,2,4,1,6
- Oracle to_char函数的功能是将数值型或者日期型转化为字符型,下面就为您详细介绍Oracle to_char函数的使用,希望对您能
- 在Udacity上课时学到了python的turtle方法,这是一个很经典的用来教小孩儿编程的图形模块,最早起源于logo语言。python
- python判断图片主色调,单个颜色:#!/usr/bin/env python# -*- coding: utf-8 -*-import
- 文件名字处理文件名字得看业务要求。不需要保留原始名字,则随机生成名字,拼接上白名单校验过的后缀即可。反之要谨慎处理://允许上传的后缀白名单