首页 > 解决方案 > SQL 查询选择小于或等于现有列的 (max - min) 的行

问题描述

假设我有一个名为 age 的表,其中包含一个名为 age 的列,该列仅包含年龄整数行。

我想找到小于或等于 (MAX(age) - MIN(age)) 的行。

我第一次采取的方法是

SELECT * FROM ages WHERE age <= MAX(age) - MIN(age)这不起作用,因为我们不能在 where 子句中使用聚合。

有没有人可以使用 sql 查询来解决这个问题?

标签: sql

解决方案


两步:

  1. 聚合表以查找最大值、最小值和差值。
  2. 然后与您的行进行比较。

查询由一个主查询和一个子查询组成:

SELECT * FROM ages WHERE age <= (SELECT MAX(age) - MIN(age) FROM ages);

推荐阅读