在MySQL中基于日期的总价和基于俱乐部的打印量

时间:2019-03-07 13:29:21

标签: mysql sql

我有两个桌子,分别是足球和足球资产。

足球如下所示:-

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')

一个玩家的价格很多,但我只想总结一下他们的最新价格。上面的查询是对所有价格求和。我想要优化。

任何帮助将不胜感激。

1 个答案:

答案 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

通过使用相关子查询,我选择所有最新价格,然后将其与资产表结合使用以获得俱乐部