У меня есть таблица из примерно 50 тыс. Строк, в которой я хранил данные о квартальных отчетах о доходах фондового рынка за последние пару лет.Проблема в том, что компания может отложить дату своего объявления после того, как я сохраню запись (я получаю новые даты каждый вечер), и моя таблица «зарабатывать на календаре» выглядит примерно так:
id symbol date
48095 AEG 12/13/2018
48013 AEG 12/6/2018
47942 AEG 11/29/2018
47873 AEG 11/22/2018
47774 AEG 11/15/2018
47381 AEG 11/8/2018
45963 AEG 8/16/2018
45843 AEG 8/9/2018
45325 AEG 6/28/2018
45327 AEG 6/28/2018
45300 AEG 6/21/2018
45272 AEG 6/14/2018
45236 AEG 6/7/2018
45196 AEG 5/31/2018
45159 AEG 5/24/2018
45113 AEG 5/17/2018
45010 AEG 5/10/2018
43705 AEG 2/15/2018
42797 AEG 11/9/2017
41550 AEG 8/10/2017
40238 AEG 5/11/2017
38335 AEG 2/17/2017
36677 AEG 11/10/2016
33877 AEG 8/11/2016
30956 AEG 5/12/2016
задержка почти всегда ровно 7 дней, но это может быть 14, и я также видел задержки всего на несколько дней.Я обоснованно решил продвинуться вперед, просто проверив, существует ли дата для определенного символа в течение последних нескольких недель, и удалив ее перед вставкой новой записи, но мне нужно исправить свои исторические данные.Это то, что у меня пока есть:
SELECT max(id) as id, symbol, max(`earnings_calendar_archive`.`date`) as date
FROM earnings_calendar_archive
GROUP BY symbol, year(`earnings_calendar_archive`.`date`),month(`earnings_calendar_archive`.`date`)
ORDER BY symbol ASC, date DESC
Это работает довольно хорошо, но в случае задержки, охватывающей два месяца, он сохраняет обе записи:
id symbol date
48095 AEG 12/13/2018
47942 AEG 11/29/2018
45963 AEG 8/16/2018
45327 AEG 6/28/2018
45196 AEG 5/31/2018
43705 AEG 2/15/2018
42797 AEG 11/9/2017
41550 AEG 8/10/2017
40238 AEG 5/11/2017
38335 AEG 2/17/2017
36677 AEG 11/10/2016
33877 AEG 8/11/2016
30956 AEG 5/12/2016
Как вы можетесмотрите в результате, есть два набора строк, которые предоставляют неправильную дату объявления.Во-первых, 12/13 и 11/29, когда я хочу, чтобы оно поддерживало 12/13, и снова, когда они непрерывно откладывали объявление с 5/10 до 6/28, где я хотел бы, чтобы запрос поддерживал 6/28,Если бы я хотел отслеживать аналитику, такую как производительность акций, после объявления о доходах, я получил бы неверные данные, так как в этом примере есть две даты, когда объявление о доходах не происходило.Есть идеи?