首页 > 解决方案 > 我需要(最大和最小)>40 的差异

问题描述

我一直在处理这个查询以从 naap 表中选择最小值和最大值。我必须按城市分组,然后按城市订购。之后,我要找到 max 和 min > 40 之间的差异

数据和查询如下。

但是,我需要找到最大值和最小值之间的区别。

我的目标是仅显示最大值和最小值之间的差异大于 40 的结果。此时 我如何找到(最大值和最小值)> 40 的差异我迷路了。请帮忙?

SELECT state, 
    MIN(avg_score),
    MAX(avg_score)
FROM naap
GROUP BY city
HAVING MIN (avg_score) >40
ORDER by city;

这是我的数据

columns: avg_score, avg_loss, avg_loss_2, id, city, state, year
table: city_stats
columns: city, average, min_pop, max_pop, standard_deviation```

标签: sql

解决方案


having如果我理解正确,您需要在子句中使用一个表达式:

SELECT city, MIN(avg_score), MAX(avg_score), MAX(avg_score) - MIN(avg_score) as diff
FROM naap
GROUP BY city
HAVING  MAX(avg_score) - MIN(avg_score) > 40
ORDER by city;

注意SELECTandGROUP BY应该是一致的。我猜你想要的价值是city而不是state

一些数据库允许您diffHAVING子句中使用而不是重复表达式。而且,你不需要选择diff它来过滤,但我认为将它放在结果集中很方便。


推荐阅读