如何编写查询语句:显示earnings列值不超最小值3倍的5条记录
实现基于earnings字段条件的查询方案
直接用子查询就能搞定,先算出earnings字段的最小值再乘3,以此作为筛选条件,最后取5条记录就行,示例SQL如下:
SELECT * FROM your_table_name WHERE earnings <= (SELECT MIN(earnings) * 3 FROM your_table_name) LIMIT 5;
说明:
- 把
your_table_name替换成你实际的表名 - 子查询
(SELECT MIN(earnings)*3 FROM your_table_name)会先计算出earnings字段的最小值,再乘以3得到阈值 - 外层查询筛选出earnings小于等于这个阈值的所有记录,最后用
LIMIT 5限制返回5条
如果你的数据库支持窗口函数(比如PostgreSQL、MySQL 8.0+、SQL Server等),也可以用这种写法:
SELECT * FROM ( SELECT *, MIN(earnings) OVER () AS min_earnings FROM your_table_name ) AS sub_query WHERE earnings <= min_earnings * 3 LIMIT 5;
这种方式通过窗口函数MIN(earnings) OVER ()给每条记录都带上整个表的earnings最小值,在外层筛选时直接用这个值计算阈值,逻辑更直观。
内容的提问来源于stack exchange,提问作者kami
相关产品推荐
相关产品推荐

