SQL_HAVING小例子

例一

求众数的sql语句1:

sql 复制代码
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值出现次数都不相同),这个查询可能不会返回任何结果,因为它要求至少等于所有其他值的出现次数。

相关推荐
瀚高PG实验室9 小时前
瀚高数据库常用系统表查询入门指南(附常用SQL)
数据库·sql·postgresql·瀚高数据库
xiancai_xianyu13 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
cc57250265314 小时前
2027校招准备:数据科学与大数据技术专业转产品数据运营,PRD与SQL怎么安排?
大数据·sql·墨刀
l1t15 小时前
DeepSeek总结的 DuckDB 2.0 中更简洁的变量语法
数据库·sql
l1t17 小时前
DeepSeek总结的在 NVIDIA Vera 上对 DuckDB v2.0-dev 进行基准测试
服务器·数据库·sql
张张123y18 小时前
# 后端第八课:数据库入门(给 FastAPI 接口加上“记忆“,存下问答历史)
数据库·sql·mysql·oracle·fastapi·sqllite
刘胡子大叔21 小时前
旧 SQL 在新 PG 上能不能跑
数据库·sql
软件交付观察室21 小时前
数据大屏总数与明细为什么对不上?2026项目开发排查指南
软件测试·数据库·sql·sqlite·数据可视化
the局外人1 天前
学会 SQLAlchemy 搭建 Python 与 MySQL 之间的数据访问桥梁 🚀
后端·python·sql
冰暮流星1 天前
mysql索引失效的情形
数据库·笔记·sql·mysql