sql limit不接具体数字_SQL 聚合函数,分组操作

62f9f12b577bc17511671c7e6affe0b5.png

一、聚合函数

1 count()求某列的行数

2. sum()对某列求和

3. avg() 对某列求均值

4. max(),min() 对某列求最大值和最小值

以上是5个最常用的聚合函数,返回满足要求的数值。

下图显示是这5个的功能,简单起见,我就写在一起,请注意别名的使用。

60b845de4192cc65620883014622cc5a.png

需要注意,所有汇总(聚合)函数后用的是*,那么会把空值也计算入内;否则,如果汇合函数有具体的列名;sum 和avg 只能计算数值类型,不能对字符串进行操作。汇总函数是支持distinct 这个去重操作的。

再举例如下: 查询课程编号为0002 的总成绩; 查询选了课程的学生人数,分别如下

71b9d471b1fce3121b0942d1d4471bb9.png

4739eed8747a3cdda6c0d3866bfee145.png
为了避免重复,需要加distinct 去重

TIPS:

SQL 书写规范有几个需要注意的,语句不区分大小写,不能用全角中文符号,列名不能加单引号,也不能空格。

二, Group by 分组

聚合操作后通常需要执行分组操作显示结果,根据条件聚合之后会形成不同的结果集合,类似一些程序中对矩阵的切块操作,数据库里显然简单些,是对行进行整块的切分。SQL的操作顺序是1 查找数据,2 找到符合条件的记录 3 分组 4 运行分组后的数据的聚合操作。

下面是几个例子

dbd7c674ed5c378c1d308b1baf25fca7.png

70eb7e428d013e18627f157b29d0717b.png

84bec8025bf6974ceb081dc6d2c69c66.png

三、

对分组结果指定条件用 having 子句,这里不能用where。where 用来限定查询条件,而having 用来对分组的结果指定条件。

计算平均成绩大于60 的人,计算平均成绩大于70 的人

32ca8939126aa97b1ea1b61536fd25e5.png

7dc211964a221c3a74d1bac6fdb91a3e.png

至少选修两门课程的学生。

cfabb007891ded9647effdf95198fa9e.png

查询同名同姓学生姓名并计算人数

2c63cbc17fc1065c9a914b5f86ecffd2.png
计算重名的人

如何用SQL解决业务问题,首先要理解问题,然后要分析出业务流程,第三对应SQL语句,根据流程判断是否需要聚合,排序等要求。

SQL的语句,order by 用来排序,两个顺序,升序和降序。对于一些数值型的计算结果,可以利用order by 排序。order by一定要放在最后,整个SQL查询也是最后执行排序操作。排序可以指定一个或者多个,优先级一次下降。注意,如果排序列存在空值,升序的时候,空值会把列前面。如果结果很大,可以用limit N 取出前N行。

可以再看几个练习,要求和结果见题中说明,同时可以看一下没有聚合函数和有聚合函数时候SQL的不同。

8dd9e6ea8f46fb965f322e7aa608ab40.png

7b070f1005c07b99f62905244ca0b97c.png

SQL的debug问题,需要知道,SQL执行的顺序是先根据from和where限定条件找到符合条件的记录,然后用group对记录进行分组,分组后做聚合操作,再把结果用having语句过滤,最后用select语句显示的并且执行order by和Limit 语句,这就是为什么group by 和having 是不能使用select 中定义的别名的,where中不能用聚合函数,因为还没有计算到。此外SQL中排序数字和字符串遵循的规律是不同的,不能混肴使用,结果可能和你想的不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL聚合函数是用于对一组数据进行汇总的函数。常用的聚合函数包括AVG()求平均值、SUM()求总和、MAX()求最大值、MIN()求最小值和COUNT()求个数。\[1\]在SQL语句,可以使用聚合函数来对数据进行统计和计算。在SQL92语法结构聚合函数通常出现在SELECT语句的字段列表,而在SQL99语法结构聚合函数可以出现在SELECT语句的字段列表,也可以出现在HAVING子句的过滤条件。\[2\]\[3\]使用聚合函数时,需要注意在GROUP BY子句指定分组字段,以便对数据进行分组。此外,还可以使用ORDER BY子句对结果进行排序,并使用LIMIT子句限制返回的记录数。 #### 引用[.reference_title] - *1* [【MySQL】常用的五个聚合函数](https://blog.csdn.net/hold_on_qlc/article/details/130474685)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【MySQL聚合函数](https://blog.csdn.net/Decade0712/article/details/129759317)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值