我正在努力在Postgres上进行循环,但是postgres上的功能并不是我的小菜一碟。
我在postgres上有下表:
| portfolio_1 | total_risk |
|----------------|------------|
| Top 10 Bets | |
| AAPL34 | 2,06699 |
| DISB34 | 1,712684 |
| PETR4 | 0,753324 |
| PETR3 | 0,087767 |
| VALE3 | 0,086346 |
| LREN3 | 0,055108 |
| AMZO34 | 0,0 |
| Bottom 10 Bets | |
| AAPL34 | 0,0 |
我想做的是在“前10个下注”之后和“ Botton 10个下注”之前获取值。
我的目标是得到以下结果:
| portfolio_1 | total_risk |
|-------------|------------|
| AAPL34 | 2,06699 |
| DISB34 | 1,712684 |
| PETR4 | 0,753324 |
| PETR3 | 0,087767 |
| VALE3 | 0,086346 |
| LREN3 | 0,055108 |
| AMZO34 | 0,0 |
所以,我的目标是在“ Botton 10 Bets”之后再次获得“ Top 10 Bets”,“ Botton 10 Bets”和AAPL34。 行数是可变的(我是从Excel文件导入的),所以我需要循环执行此操作,对吗?
答案 0 :(得分:0)
SQL表和结果集表示无序集。除非行明确提供该信息,否则没有“之前”或“之后”。
让我假设您有这样一列,为方便起见,我将其称为id
。
然后,您可以通过多种方式执行此操作。这是一个:
select t.*
from t
where t.id > (select min(t2.id) from t t2 where t2.portfolio_1 = 'Top 10 Bets') and
t.id < (select max(t2.id) from t t2 where t2.portfolio_1 = 'Bottom 10 Bets');