【问题标题】:Sum price based on date and print based on clubs in mysql基于日期的总价格并基于mysql中的俱乐部打印
【发布时间】:2019-03-08 14:29:26
【问题描述】:

我有两张桌子,它们是足球和足球资产。

足球看起来像:-

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 名球员。如果您查看足球桌,您会发现它们的价格不同。因此它将根据每个玩家的日期时间选择最新价格,然后将其相加。 pair 是两个表之间的公共列。所以有很多这样的记录。我想总结该俱乐部所有球员的价格,但价格将是最新的。 price 将从 football 表中的 date 列中获取。输出如下:-

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

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

任何帮助将不胜感激。

【问题讨论】:

  • 您需要显示更多行以获得更好的清晰度。另外,latest price to be summed 是什么意思?如果最新的价格在你的表中只有 1 行,需要求和吗?
  • @vivek_23 不止一行。我只是举了一个例子。
  • @vivek_23 我已经更新了代码,请检查并告诉我。
  • 输出28.07 是所有价格的总和。那么,哪里只考虑最新的呢?
  • @vivek_23 这是错误的,它是添加所有价格而不是最新价格。

标签: mysql sql


【解决方案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

通过使用相关子查询,我选择了所有最新价格,然后使用加入资产表获取俱乐部

【讨论】:

  • @AlekStephanok 你能把那个错误粘贴到这里吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 2010-12-08
  • 1970-01-01
  • 2022-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多