mysql - 将单个字段与 SQL 中由其他字段分组的同一字段的平均值进行比较
问题描述
我正在尝试创建一个查询,以获取高于其性别平均身高的人的姓名。
我知道如何获得每个性别的平均身高:
SELECT avg(height), gender from client group by gender
但我不知道如何将每个人(基于他的性别)与这个子查询进行比较..
这是我能做的:
SELECT cname
FROM (SELECT height, cname, gender
FROM client AS PplHeight
HAVING (height > (SELECT avg(height) from client group by gender))) AS AboveAvg
提前致谢。
解决方案
要么加入:
select client.*
from client
join
(
select gender, avg(height) as avg_height
from client
group by gender
) genders on client.gender = genders.gender and client.height > genders.avg_height;
或使用相关子查询:
select *
from client
where height >
(
select avg(height)
from client all_clients
where all_clients.gender = client.gender
);
推荐阅读
- html - 将附加组件添加到表中的 tr 元素
- php - 数学/比较检查不起作用
- javascript - 将新原型分配为 InheritingClass.prototype = Object.create(InheritedClass.prototype)
- mysql - 如何为 mariadb、node.js 和 websockets 创建准备好的语句
- java - 在 GUI 设计中难以将数组列表的值加载到 Jcombobox 中
- android - 我正在尝试从手机中获取音频文件,但我的应用无法获取文件,因为我编写了这行代码帮助我找到解决方案
- mysql - 在 SQL 查询之外导出值(回调地狱)
- javascript - 如何在不使用特定 ID 的情况下使用 jsPDF 生成 pdf
- python - 你怎么知道 Facebook 的 Graph API 缺少哪些权限?
- ios - Flutter 重复符号“_FLTPathProviderPlugin”问题