我很想知道是否有办法选择特定字段的值大于同一字段最大值一半的行。
例如,我们有一个包含3个字段(id,name,rate)的结果集,其中rate是别名。如果最高费率为70
,那么查询应返回rate > 35
(35
是70
的一半)的所有行。
类似的东西:
SELECT * FROM (A heavy and large select)as r WHERE r.rate > MAX(rate) / 2
请注意,我不知道最高费率是多少,并希望在单个查询中执行此操作。
更新
main select是一个非常繁重的查询,rate是别名,因此使用subquery for max rate需要再次编写那个繁重的查询。
答案 0 :(得分:4)
它的基本编码就像你说的那样:
select * from mytable
where rate > (select max(rate) from mytable) / 2:
答案 1 :(得分:2)
with cts as
(select max(rate) as maxRate
from tableName
)
select *
from tableName a join cts b
on a.rate > maxRate/2
没有经过测试,但应该有效
和mysql
select *
from tableName a join (select max(rate) as maxRate from tableName) b
on a.rate > b.maxRate/2
答案 2 :(得分:1)
我认为这个未经测试的代码可能有效,
选择ID,名称,费率 从表 按ID,名称,费率分组 有比率> MAX(速率)/ 2;
答案 3 :(得分:0)
SELECT *
FROM table a
INNER JOIN
(SELECT
id
,MAX(rate) / 2 AS max_rate
FROM table
GROUP BY id) b ON a.id = b.id
WHERE rate > max_rate