Я пытаюсь создать трекер цен в учебных целях, очень похожий на то, что делает coinmarketcap.Я делаю вызов обновления, который собирает информацию от каждого из сохраненных API обменов и сохраняет результаты в базе данных каждые 5 минут.Мне было интересно, есть ли способ настроить запрос на поиск, который бы вычислял средневзвешенную цену по объему на основе структуры базы данных ниже (пропущены очевидные столбцы, такие как id и созданные / измененные временные метки)
В настоящее время я получаю vwapрассчитав стоимость BTC / USD vwap и сохранив ее.Затем я конвертирую все маркеры, котируемые в BTC, в доллары США, используя цену из расчета BTC / USD.Затем я повторяю для ETH / USD и так далее.Мне интересно, стоит ли мне переосмыслить структуру моей базы данных, есть ли способ создать запрос, который бы вычислял vwaps в разных валютах котировок, которые я могу использовать для преобразования каждого рынка в другие валюты котировок.
Примечание: том имеет 2 столбца quote_volume и base_volume , но для краткости сжат для тома .
Ассоциации:
- Биржи имеет много рынков
- Рынки имеет много цен
- Рынки имеет много котировок
- Цены имеютМногие ценыИстории
БиржиТаблица
|------------|-------------|
| name | website |
|------------|-------------|
| Simex | www |
|------------|-------------|
MarketsTable
|---------------|------------|-------------|-------------|
| exchange_id | name | quote | base |
|---------------|------------|-------------|-------------|
| 12 | BTCUSD | USD | BTC |
|---------------|------------|-------------|-------------|
Прайс-лист
|---------------|-----------|------------|------------|-------------|
| market_id | last | high | low | volume |
|---------------|-----------|------------|------------|-------------|
| 5 | 3989.36 | 4012.78 | 3942.87 | 125,000,000 |
|---------------|-----------|------------|------------|-------------|
Прайс-лист историиИстория
|---------------|-----------|------------|------------|-------------|
| prices_id | last | high | low | volume |
|---------------|-----------|------------|------------|-------------|
| 8 | 3989.36 | 4012.78 | 3942.87 | 125,000,000 |
|---------------|-----------|------------|------------|-------------|