当前位置: 首页 > article >正文

SQL_HAVING小例子

例一

求众数的sql语句1:

select income,count(*) as cnt 
from graduates
group by income
having count(*) >= all(
  select count(*) 
  from graduates 
  group by income);

这段SQL语句的作用是从一个名为graduates的表中找出income(收入)字段的众数。众数是指在一组数据中出现次数最多的数值。

逐步分析:

  1. select income, count() as cnt from graduates:这部分是查询的基础,它从graduates表中选择income字段,并计算每个income值出现的次数(使用count()函数),将这个计数命名为cnt。
  2. group by income:这个子句将结果按income字段的值进行分组。这意味着对于表中的每个不同的income值,都会计算出该值出现的次数。
  3. having count() >= all (select count() from graduates group by income):HAVING子句用于过滤GROUP BY子句产生的分组结果。这里,它用于找出那些出现次数至少和其他所有income值一样多的income值。
  4. 子查询select count() from graduates group by income再次对graduates表进行分组和计数,但是这次没有在外部查询中使用。all关键字确保外部查询的count()(即cnt)至少等于子查询返回的每个cnt值。

简而言之,这个查询的逻辑是:对于graduates表中的每个income值,计算它的出现次数,然后只保留那些出现次数至少和其他所有income值一样多的income值。这样,如果某个income值是众数(即出现次数最多),它就会被这个查询语句选出。
需要注意的是,如果有多个income值出现次数相同且都是最多的,这个查询会返回所有这些值。如果没有众数(即所有income值出现次数都不相同),这个查询可能不会返回任何结果,因为它要求至少等于所有其他值的出现次数。


http://www.kler.cn/a/317765.html

相关文章:

  • 微服务即时通讯系统的实现(客户端)----(1)
  • 微信小程序的主体文件和页面文件介绍
  • 群控系统服务端开发模式-应用开发-前端个人信息功能
  • docker配置代理解决不能拉镜像问题
  • Spring Boot 2.x 和 Druid 多数据源整合 dm
  • 山泽光纤HDMI线:铜线的隐藏力量
  • [Spring]Spring MVC 请求和响应及用到的注解
  • 文本驱动的3D人体动作生成
  • Postman导出报告
  • Linux复习--网络基础(OSI七层、TCP三次握手与四次挥手、子网掩码计算)
  • Docker学习笔记(四)单主机网络
  • 【Elasticsearch】-实现向量相似检索
  • Spring MVC 基本配置步骤 总结
  • Kafka 3.0.0集群部署教程
  • 【Proteus单片机仿真】基于51单片机的循迹小车避障+气体传感器和温度传感器系统
  • conda环境下module ‘numba.types‘ has no attribute ‘Macro‘问题解决
  • 【Qt】控件样式案例
  • 后端开发刷题 | 最小的K个数(优先队列)
  • Github上开源了一款AI虚拟试衣,看看效果
  • 20240924软考架构-------软考191-195答案解析
  • iOS 18 正式上線,但 Apple Intelligence 還要再等一下
  • 完结马哥教育SRE课程--服务篇
  • 02【Matlab系统辨识】白噪声
  • 【论文阅读】Act3D: 3D Feature Field Transformers for Multi-Task Robotic Manipulation
  • CSS 复合选择器简单学习
  • 128页4W字精品文档 | 某智慧能源集团数字化管理平台项目建议书