SQL之分组查询

1. GROUP BY 子句

GROUP BY 函数就是 SQL 中用来实现分组的函数,其用于结合聚合函数,能根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
实例:
描述
请编写 SQL 语句,查询教师表 teachers,统计不同年龄教师的人数,并将结果按照年龄从大到小排列,返回列名显示为 age_count。

表定义: teachers (教师表)
在这里插入图片描述
SQL语句:

SELECT  `age`,COUNT(`age`) AS `age_count`
FROM `teachers`
GROUP BY `age`
ORDER BY `age` desc;

2. HAVING 子句

我们在使用 WHERE 条件子句时会发现其不能与聚合函数联合使用,为解决这一点,SQL 中提供了 HAVING 子句。在使用时, HAVING 子句经常与 GROUP BY 联合使用,HAVING 子句就是对分组统计函数进行过滤的子句。

HAVING 子句对于 GROUP BY 子句设置条件的方式其实与 WHERE 子句与 SELECT 的方式类似,语法也相近,但 WHERE 子句搜索条件是在分组操作之前,而 HAVING 则是在之后。
实例:
请编写 SQL 语句,查询 teachers 表中,各个国家所有教师的平均年龄大于所有国家教师的平均年龄的教师信息。
表定义: teachers (教师表)
在这里插入图片描述
SQL语句:

SELECT * FROM teachers
WHERE country=any(SELECT country FROM teachers
GROUP BY `country` HAVING AVG(age)>(SEL
ECT AVG(age) FROM teachers));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server分组查询是通过使用GROUP BY语句将数据按照某种值进行分组的一种查询方式。具体来说,分组查询是指将数据表中的数据按照指定规则进行分组,并针对每个分组进行数据处理。在分组查询中,需要使用GROUP BY子句指定分组的规则,该子句将根据指定的列或列组合将数据集划分为多个小区域。通过结合聚合函数,可以对每个分组进行计算并返回单个值。在GROUP BY子句中,需要引用与查询中要返回的列相对应的列。例如,如果查询涉及到sno和score两列,那么在GROUP BY子句中就需要引用sno和score。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SQL分组查询](https://blog.csdn.net/weixin_50179223/article/details/124025809)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [SQL Server分组查询](https://blog.csdn.net/m0_67879025/article/details/124459891)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值