首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用Python打开数据库的大门|数据库的聚合查询

大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。

我们前边已经学习了几期数据库的内容了。其实对于单纯的的数据存取来说,建立数据表、添加数据这种操作还是很简单的,而且也没太多变化,但查询数据就不一样了。如何快速地查询到所需要的数据始终是数据库操作的主要难点。上一期的内容就是数据查询的一部分,将不同表中的数据连接起来形成一个更完整的数据,而除此之外我们还可以将数据进行整合,挖掘一些隐含在数据中的数据。虽然这一步可以通过编程来实现,但使用SQL写个查询语句就能实现的功能我们何乐而不为呢?返回整合后的查询数据被称为聚合查询,这个过程包括聚合函数处理、数据分组和筛选三个方面。

1.聚合函数

假设你使用数据库记账,虽然你记录的是一条条的收支信息,但分析账本的时候更关注的是总收支。这时候我们就需要对数据进行处理。这实际上就是一列求和嘛,在excel里使用sum函数一拉就好,在SQL中也差不多。同样,想要求平均值、计数、求最大最小值也是一样的。SQL中聚合函数如下:

如何使用呢?我们在使用SELECT语句时只要把需要处理的列名放入函数中就可以了。为了演示,室长在之前小药箱的数据库中添加了一列药品价格(价格是我编的),计算一下买这些药花了多少钱:

没什么问题。

这里再说一句,我们使用聚合函数等方法处理某列数据,展示出来的列名会发生变化,例如上图中的SUM(price),而使用JOIN语句连接两个表时列名有可能冲突,或者我们只是单纯想修改展示出来的列名,该如何去做呢?我们可以在列名后添加一个AS,再接上新的列名,就像这样:

2.数据分组

大部分情况下我们不想眉毛胡子一把抓,把整个一列数据直接处理。比如记账,你未必关心从记账开始到现在花了多少钱,这没有多少分析价值,你需要的可能是统计一下每天每月每年花了多少钱,或者吃饭花了多少钱,打车花了多少钱。这就需要根据条件把表拆开再使用聚合函数,使用到的是GROUP BY语句,后边接的是作为分割条件的列名,这个列名可以是一个也可以是多个,在聚合查询中被称为聚合键。我们现在给小药箱添加一些数据,然后统计一下各种药所购买的次数:

GROUP BY语句要处于FROM的后边,注意这里的用词是“处于”而不是跟在后边,下边我们会解释这个问题。

3.筛选

有的同学可能问了,筛选不是WHERE语句吗?已经讲过了吧?还真不是。WHERE语句的筛选发生在聚合查询之前,先把数据进行一个筛选,然后剩下的数据再拿去聚合。而如果想要针对聚合后的数据进行筛选,那我们需要使用HAVING语句。例如我们现在想查询总共花费超过10块钱的药品:

HAVING不像WHERE那么自由,因为它是专门用来筛选聚合后的数据的,所以它要么是对聚合键的筛选,要么是对聚合函数处理结果的筛选,不能随便写一个列上去,这点需要注意。

那么这个查询的过程就非常明确了,首先是从表中选取字段(SELECT...FROM)并对字段设定聚合方式,然后进行筛选(WHERE),筛选后的数据进行分组(GROUP BY),最后对分组后的数据再进行筛选(HAVING)。在一次查询中不一定会涉及所有的步骤,但顺序是如此的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230202A07WTL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券