我正在做一道作业:“列出每个客户的姓名和体重,对于平均体重在 10 磅以内的客户。(不要使用[整数]作为平均体重,你将不得不使用函数求平均重量。)
我尝试过一些方法,例如:“WHERE c_weight BETWEEN avg(c_weight - 10) and avg(c_weight + 10)”
但无济于事。
我当前的代码编译:
SELECT c_first, c_last, c_weight
FROM client
WHERE c_weight between 160 and 180;
上面的代码只是一个占位符;我知道更正位于我的 WHERE
语句中,我只是不确定如何正确创建它。感谢您的帮助!
最佳答案
我将其表述为:
SELECT c_first, c_last, c_weight
FROM client
WHERE c_weight - (SELECT AVG(c_weight) FROM client) BETWEEN -10 AND 10;
请注意,我们使用子查询来查找整个表的平均权重,然后将每个记录的权重与该权重进行比较,看看它是否在范围内。
为了理解 WHERE
子句中的逻辑,假设平均权重为 150。那么 WHERE
子句中的范围表示:
c_weight - 150 >= -10 AND c_weight - 150 <= 10
这等同于:
c_weight >= 140 AND c_weight <= 160
关于mysql - 列出正负列平均值范围内的[行],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58704138/