![](/img/trans.png)
[英]MYSQL - how do i select no more than x rows max with the same field value y?
[英]Select rows where specific field has value more than half of max value of the same field
我想知道是否有一种方法可以选择特定字段的值大于同一字段最大值一半的行。
例如,我们有一个包含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需要再次编写那个繁重的查询。
它的基本编码就像你说的那样:
select * from mytable
where rate > (select max(rate) from mytable) / 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
我认为这个未经测试的代码可能会起作用,
从表组中选择id,名称,费率,按名称,名称,费率> max(rate)/ 2;
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.