从零开始学习SQL数据库操作:学习聚合函数的使用方法

SQL 中的聚合函数非常强大。当将这些函数与GROUP BY和 等子句组合时HAVING,我们发现了从全新角度查看数据的方法。我们可以使用这些函数来给我们带来全新的见解,而不是看着同样的旧的无休止的平板。聚合函数帮助我们理解更宏观的事物。 这些事情可能包括查找数据集中的异常值,或者只是根据某些任意指标(例如销售数字)确定应该解雇哪位有家庭需要养活的员工。

掌握了 S的基础知识JOIN后,SQL 开始变得非常非常强大。我们普通的二维表格突然获得了这种能力,可以组合、聚合、折叠起来,像宇宙本身一样无限向外扩展,甚至超越到第四维度。*

*需要引用

我们的基本聚合函数

首先,让我们看看“聚合函数”是什么意思。这些简单的函数为我们提供了一种从数学上量化数据库中具体内容的方法。对表列执行聚合函数,为我们提供所述列的组成。就其本身而言,它们看起来非常简单:

  • AVG:列中一组值的平均值。

  • COUNT:指定表或视图中一列包含的行数。

  • MIN:一组值中的最小值。

  • MAX:一组值中的最大值。

  • SUM:值的总和。

不同的聚合

当我们想知道值的数量时,单独使用聚合函数的一种特别有用的方法是DISTINCT。虽然聚合值考虑了所有记录,但使用DISTINCT限制返回的数据专门引用唯一值。COUNT(column_name)将返回列中所有记录的数量,其中COUNT(DISTINCT column_name)将忽略计数列中重复值的记录。

使用 GROUP BY

该GROUP BY语句通常与聚合函数(COUNT、MAX、MIN、SUM、AVG)一起使用,以按一列或多列对结果集进行分组。

为了演示聚合函数如何继续工作,我将使用一个熟悉的数据库:该数据库包含本博客的所有内容。让我们快速预览一下我们正在处理的内容:

titleslugfeature_imagemeta_titlemeta_descriptioncreated_atupdated_atpublished_atcustom_excerpt
Welcome to Hackers and Slackerswelcome-to-hackers-and-slackers/content/images/2017/11/welcome@2x.jpgWelcome to Hackers and Slackers | Hackers and SlackersTechnology for badasses2017-11-17 20:29:132018-07-25 02:06:022017-11-13 20:37:00Technology for badasses.
Generating Tree Hierarchies with Treelibcreating-trees-in-treelib/content/images/2017/11/tree7@2x.jpgTree Hierarchies with Treelib | Hackers and SlackersTreelib is a Python library that allows you to create a visual tree hierarchy: a simple plaintext representation of parent-child relationships.2017-11-17 20:45:102019-03-28 09:02:392017-11-17 20:56:40Using Python to visualize file hierarchies as trees.
About the Squadabouthttps://hackers.nyc3.cdn.digitaloceanspaces.com/posts/2017/11/welcome@2x.jpgAbout | Hackers and SlackersHackers and Slackers is a community which values technology, life, and improving the latter with the former.2017-11-17 20:58:422019-04-22 08:47:022017-11-17 20:58:46Hackers and Slackers is a community which values technology, life, and improving the latter with the former.
Joinjoinhttps://hackers.nyc3.cdn.digitaloceanspaces.com/posts/2017/11/join@2x.jpgJoin | Hackers and Slackers
2017-11-17 20:59:052018-07-25 02:06:022017-11-17 21:03:06
Merge Sets of Data in Python Using Pandasmerge-dataframes-with-pandas/content/images/2017/11/pandasmerge@2x.jpgMerging Dataframes with Pandas | Hackers and SlackersPerform merges of data similar to SQL JOINs using Python's Pandas library: the essential library for data analysis in Oython.2017-11-18 00:09:322018-12-26 09:29:222017-11-18 00:22:25Perform SQL-like merges of data using Python's Pandas.

我们议程上的第 1 项:我们将使用聚合来查找哪些作者发帖最频繁:

SELECT
  COUNT(title), author_idFROM
  postsGROUP BY author_id;

结果:

Countauthor_id
1021
2805c12c3821345c22dced9f591
175c12c3821345c22dced9f592
55c12c3821345c22dced9f593
25c12c3821345c22dced9f594
25c12c3821345c22dced9f595

哦,看,一个现实生活中的数据问题需要解决!看起来 Ghost 的帖子表中的作者只是通过他们的 ID 来表示。这不是很有用。幸运的是,我们已经对 JOIN 有了足够的了解,知道我们可以填充users表中缺失的信息!

SELECT
  COUNT(posts.title),
  users.nameFROM
  postsLEFT JOIN usersON
  (posts.author_id = users.id)GROUP BY users.idORDER BY COUNT(posts.title) DESC;

让我们看看这次的结果:

Countauthor_id
280Matthew Alhonte
102Todd Birchard
17Max Mileaf
5Ryan Rosado
2Graham Beckley
2David Aquino

现在更像了!马特(Matt)凭借他的山猫综述系列(Lynx Roundup )碾压了比赛,而我则位居第二。马克斯曾一度拥有可观的数字,但想必已经转向了其他爱好,比如过自己的生活。

对于剩下的事情,除了我们正在招聘之外,我没有什么可说的。不过我们不付钱。事实上,加入我们的好处可能为零。

使用“HAVING”进行条件分组

HAVING就像WHERE聚合的一样。我们不能使用WHERE聚合值,所以这就是HAVING存在的原因。HAVING不能接受任何条件值,但它必须接受从GROUP BY. 也许这在查询中更容易可视化:

SELECT
  tags.name,
  COUNT(DISTINCT posts_tags.post_id)FROM posts_tags  LEFT JOIN tags ON tags.id = posts_tags.tag_id  LEFT JOIN posts ON posts.id = posts_tags.post_idGROUP BY
  tags.idHAVING
  COUNT(DISTINCT posts_tags.post_id) > 10ORDER BY
  COUNT(DISTINCT posts_tags.post_id)
  DESC;

在这种情况下,我们希望查看博客上的哪些标签拥有最多的相关帖子。该查询与我们之前的查询非常相似,只是这次我们有一位特殊的客人:

HAVING
  COUNT(DISTINCT posts_tags.post_id) > 10

这种用法HAVING只能为我们提供具有十个或更多帖子的标签。通过让达尔文主义顺其自然,这应该可以清理我们的报告。结果如下:

tagCount
Roundup263
Python80
Machine Learning29
DevOps28
Data Science28
Software Development27
Data Engineering23
Excel19
SQL18
Architecture18
REST APIs16
#Adventures in Excel16
Pandas15
Flask14
Data Analysis12
JavaScript12
AWS11
MySQL11

正如预期的那样,Matt 的综述帖子占据领先地位(如果我们将其与之前的数据进行比较,我们可以看到 Matt 总共发布了17 个非 Lynx 帖子:这意味着 Max 和 Matt 正式并列)。

如果我们没有包含我们的HAVING声明,这个列表将会更长,充满了没人关心的标签。由于明确的省略,现在我们不需要经历面对那些悲伤可悲的标签时所带来的黑暗抑郁。眼不见,心不烦。

更多聚合

为了探索其他一些聚合,我们将切换数据集。这次,我们将研究美国城市的风速:

datetimeVancouverPortlandSan FranciscoSeattleLos AngelesSan DiegoLas VegasPhoenixAlbuquerqueDenverSan AntonioDallasHoustonKansas CityMinneapolisSaint LouisChicagoNashvilleIndianapolisAtlantaDetroitJacksonvilleCharlotteMiamiPittsburghTorontoPhiladelphiaNew YorkMontrealBostonBeershebaTel Aviv DistrictEilatHaifaNahariyyaJerusalem
2012-10-01 12:00:00































8


2012-10-01 13:00:00002000024403103404430343034743108222
2012-10-01 14:00:00002000024403103404430343034743308222
2012-10-01 15:00:00002000024303103404430343033743308222
2012-10-01 16:00:00002000024303103304430343033743308222
2012-10-01 17:00:00002000024303103304430343033633308222
2012-10-01 18:00:00002000024303203304430343033633308222
2012-10-01 19:00:00002000024303203304430344033633218222
2012-10-01 20:00:00001000014303203304430344033633218222
2012-10-01 21:00:00001000014303203304430344033633218222

让我们想想芝加哥是否真的是风城,好吗?

SELECT
	AVG(Chicago),
	AVG(`San Francisco`),
	AVG(`Los Angeles`),
	AVG (Seattle),
	AVG(`New York`),
	AVG(`Boston`),
	AVG(Vancouver),
	AVG(Miami)FROM
	wind_speed;

...Aa结果!:

AVG(Chicago)AVG(`San Francisco`)AVG(`Los Angeles`)AVG (Seattle)AVG(`New York`)AVG(`Boston`)AVG(Vancouver)AVG(Miami)
3.75932.78671.21952.11813.21103.38092.43273.2365

哇,这么看来(乍一看),芝加哥确实是风最大的城市!我……不确定出于某种原因我是否在期待这一点。让我们看看芝加哥的风速范围:

SELECT
	AVG(Chicago),
	MIN(Chicago),
	MAX(Chicago)FROM
	wind_speed;
AVG(Chicago)MIN(Chicago)MAX(Chicago)
3.7593025

那么芝加哥数据集中的最低风速似乎为 0(并不令人震惊)。另一方面,我们记录的芝加哥最高风速为25 英里/小时!哇!那不是……危险吗?

发挥创意

聚合函数不仅仅是计算值或求平均值。特别是在数据科学中,这些函数对于从数据中得出任何统计结论至关重要。也就是说,注意力的持续时间有限,而且我不是科学家。也许这可以是你的工作。文章来源地址https://www.toymoban.com/diary/sql/577.html

到此这篇关于从零开始学习SQL数据库操作:学习聚合函数的使用方法的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/sql/577.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
从零开始学习SQL数据库操作:建立关系和组合数据集
上一篇 2023年12月09日 13:54
SQLAlchemy数据模型之间的关系 - 构建有意义关系的数据模型
下一篇 2023年12月09日 16:16

相关文章

  • 【手写数据库】从零开始手写数据库内核,行列混合存储模型,学习大纲成型了

    ​ 专栏内容 : 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况下对故障容灾的支持。 手写数据库toadb 本专栏主要介绍如何从零开发,开发的

    2024年02月04日
    浏览(60)
  • MySQL数据库增删改查及聚合查询SQL语句学习汇总

    目录 数据库增删改查SQL语句 MySQL数据库指令 1.查询数据库 2.创建数据库 3.删除数据库 4.选择数据库 创建表table   查看所有表 创建表 查看指定表的结构 删除表 数据库命令进行注释 增删改查(CRUD)详细说明 增加 SQL库提供了关于时间的函数:now()  查询 查询表作列与列之间进

    2024年02月09日
    浏览(86)
  • MySql学习2:SQL分类、数据库操作、表操作、数据的增删改查

    SQL分类: DDL:数据定义语言,用来定义数据库对象(数据库、表、字段) DML:数据操作语言,用来对数据库表中的数据进行增删改 DQL:数据库查询语言,用来查询数据库表中的记录 DCL:数据控制语言,用来创建数据库用户、控制数据库的访问权限 查询所有数据库 查询当前

    2024年02月11日
    浏览(53)
  • 从零开始:安装H2数据库的步骤解析

    在开发或编写示例时,有时需要用到数据库,如果本机上刚好没有安装,类似有些同学是临时借用的电脑或学校的电脑刚好没有安装时,我们可以使用H2数据库来快速代替,即方便又灵活。 步骤 1:下载H2数据库 访问H2数据库的官方网站(https://www.h2database.com/),并下载最新的

    2024年02月08日
    浏览(47)
  • 完全从零Java自学系列【入门篇】(第四课:Mysql服务端安装&使用客户端操作数据库&初识SQL基础操作&Java中使用第三方包&Java数据库操作&初步理解面相对象真正的意义之桥接设计模式)

      数据库是专门用来存储一系列集合数据的地方。所有的文件都可以被称之为库,当应用场景没那么复杂的时候,简单的应用程序用文本就可以了。数据库的意义是为了设计更好的保障数据安全(如多线程操作)、数据一致、索引(如何在庞大的数据中快速查找)等等一系

    2024年02月21日
    浏览(62)
  • 从零开始构建基于milvus向量数据库的文本搜索引擎

    在这篇文章中,我们将手动构建一个语义相似性搜索引擎,该引擎将单个论文作为“查询”输入,并查找Top-K的最类似论文。主要包括以下内容: 1.搭建milvus矢量数据库 2.使用MILVUS矢量数据库搭建语义相似性搜索引擎 3.从Kaggle下载ARXIV数据,使用dask将数据加载到Python中,并构

    2024年02月09日
    浏览(66)
  • 数据库 SQL高级查询语句:聚合查询,多表查询,连接查询

    创建Students和Courses表 直接查询 设置别名查询 设置条件查询 使用COUNT(*) 和 COUNT(StudentID)是一样的效果,因为StudentID是主键,每行记录的主键都不同。另外我们在聚合查询中还是能使用WHERE子句的,比如我们要 查找年龄大于20岁的学生数量 ,可使用以下SQL语句: 函数 说明 SUM

    2024年02月09日
    浏览(129)
  • 利用yolov8零售商品识别实现的智能结算系统 yolo+后端flask+数据库sqlite+前端html(从零开始,全流程教学)

    全流程 教程,从数据采集到模型使用到最终展示。 支持用户点击添加至购物车、图片识别添加至购物车、摄像头识别添加至购物车,还包括用户信息,商品展示等功能。若有任何疑问和建议欢迎评论区讨论。 摄像头识别添加至购物车 图片识别添加至购物车 用户点击添加至

    2024年02月10日
    浏览(69)
  • 数据库应用:MySQL数据库SQL高级语句与操作

    目录 一、理论 1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL高级操作 5.MySQL中6种常见的约束 二、实验  1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL高级操作 5.主键表和外键表  三、总结 克隆表:将数据表的数据记录生成到新的表中。 (1)克隆表 ① 先创建再导入 ② 创建

    2024年02月13日
    浏览(83)
  • SQL 数据库基本操作

    打开 SSMS(Microsoft SQL Server Management Studio),“对象资源管理器” 窗口列表中依次双击 “UERE-20220228OY” → ”数据库“ → ”系统数据库“ (”UERE-20220228OY“ 是系统连接的服务器名称,不同的计算机中名称不尽相同),在展开的列表中可看到 4个已经存在的数据库,分别为

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包