Mysql 选择特定字段的值超过同一字段最大值一半的行

Mysql 选择特定字段的值超过同一字段最大值一半的行,mysql,sql,select-query,Mysql,Sql,Select Query,我想知道是否有一种方法可以选择特定字段的值超过同一字段最大值一半的行 例如,我们有一个结果集,其中有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是一个非常繁重的查

我想知道是否有一种方法可以选择特定字段的值超过同一字段最大值一半的行

例如,我们有一个结果集,其中有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是一个别名,因此使用子查询max-rate需要再次编写这个繁重的查询

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 

它基本上是像你说的那样编码的:

select * from mytable
where rate > (select max(rate) from mytable) / 2:

我认为这个未经测试的代码可能会起作用

选择id、名称、速率 从桌子上 按id、名称、速率分组
速率>最大(速率)/2

哦,没有发现它的mysql,我的坏,sry/我的错朋友们,我问的问题似乎很简单。所以我编辑了这个问题。这确实可以解决问题,但我的问题似乎很简单。所以让我来编辑它。这似乎是解决问题的起点,执行了查询,但只返回了1行。有些东西需要改进。这不起作用。
having
子句中的
rate
是一行中的任意值。
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