用子查询和公式给出结果?

wwodge7n  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(267)

我最近一直在想这个问题,我想知道有多少我的用户可以在他们的帐户中获得超过50%的利润。所以,正如你在表中看到的,我有投资和收益,所以从逻辑上讲,我必须做一个百分比来获得利润。例如:((收益-投资*100)/投资)

ID  Investment (euros)  Earnings (euros)
13      2   3.4
14      1   0
15      4   7
16      12  20.76

从这里一切正常,但我的问题是,我如何计算和显示的用户,在同一时间有超过50%的利润?
我做了一个简单的查询,它可以工作,但不会显示超过50%的用户,而是显示所有人。

select id, ((MAX(earnings)-investment)*100)/investment
from users
group by id, investment
;

所以,我的想法是创建一个子查询,但我有一个很大的问题:

select id
from users
where 50 < (
select (((MAX(earnings)-investment)*100)/investment)
from users
group by investment
)
group by id
;

我收到了以下错误:detail:表达式返回的行不应超过一行
我不知道我做错了什么。杰普!

flseospp

flseospp1#

这不是公式吗?

select id, (sum(earnings) - sum(investment))*100 / sum(investment) as profit
from users
group by id;

如果要筛选,请添加:

having profit > 50

要获取计数,请使用子查询:

select count(*)
from (select id, (sum(earnings) - sum(investment))*100 / sum(investment) as profit
      from users
      group by id
     ) u
where profit > 50;

相关问题