Сумма цены на основе даты и печати на основе клубов в MySQL - PullRequest
0 голосов
/ 07 марта 2019

У меня есть два стола, и это футбол и футбольные активы.

Футбол выглядит так: -

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 Ответ

1 голос
/ 08 марта 2019

попробуйте, как показано ниже, с помощью подзапроса

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

Используя коррелированный подзапрос, я выбираю всю последнюю цену, затем использую таблицу соединений с активами, получая клуб

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...