我有两个桌子,分别是足球和足球资产。
足球如下所示:-
id | pair | name | date | price | sell | fetched
---------------------------------------------------------------------------------
6 | luca-antonelli | Luca Antonelli | 2018-12-20 04:57:36 | 0.50 | 0.47 | 1
7 | luca-antonelli | Luca Antonelli | 2018-09-06 12:39:58 | 0.65 | 0.52 | 1
8 | luca-antonelli | Luca Antonelli | 2018-10-15 16:45:28 | 0.59 | 0.49 | 1
9 | ryan-fraser | Ryan Fraser | 2018-03-28 08:56:57 | 5.51 | 0.47 | 1
10 | ryan-fraser | Ryan Fraser | 2018-04-20 06:19:07 | 7.28 | 0.49 | 1
11 | jordon-ibe | Jordon Ibe | 2018-10-14 22:52:58 | 11.23 | 0.17 | 1
12 | jordon-ibe | Jordon Ibe | 2018-11-25 19:37:26 | 2.31 | 0.29 | 1
所以您可以看到三行,因此从这里它将根据日期选择价格 足球资产如下所示:-
id | pair | Club
-----------------------------------
86 | luca-antonelli | Liverpool
87 | ryan-fraser | Liverpool
88 | jordon-ibe | Liverpool
因此,俱乐部利物浦有3名球员。如果您看足球桌,您会发现它们的价格不同。因此它将根据日期时间为每个玩家选择最新价格,然后将其相加。对是两个表之间的公共列。所以有很多这样的记录。我想对那家具乐部的所有球员的价格求和,但是价格将是最新的。价格将从足球表的日期列中获取。输出如下:-
club | price
------------------
Liverpool | 28.07
我尝试过的查询是:-
SELECT club, SUM(price) as price from football JOIN football_assets ON football_assets.pair = football.pair WHERE club IN ('Paris Saint-Germain', 'Lille', 'Lyon')
一个玩家的价格很多,但我只想总结一下他们的最新价格。上面的查询是对所有价格求和。我想要优化。
任何帮助将不胜感激。
答案 0 :(得分:1)
尝试使用子查询,如下所示
select fa.club,sum(a.price) as price from
(
select f.* football f
where f.date=(select max(date) from football f1 where f1.pair=f.pair)
) a join footballassets fa on a.pair=fa.pair
group by fa.club
通过使用相关子查询,我选择所有最新价格,然后将其与资产表结合使用以获得俱乐部