我怎样才能在MySQL上搜索这个?

时间:2018-02-21 08:36:19

标签: php mysql

每天,cron在data_log.table上插入所有硬币的日志。

我使用来自coinmarketcap的API。

API文档:https://coinmarketcap.com/api

我在加密货币名称方面有很多重复。

挑战是在2018-02-11和2018-02-18之间进行搜索,以便在此期间找到一个三倍的硬币,即你的市值或你的交易量。

我想在mySQL上用一个表达式搜索所有硬币。

我的API咨询:http://127.0.0.1/db.php?json=data_log&startdate=2018-02-12&finaldate=2018-02-17

我该怎么做?

我不想搜索一个特定的硬币,我想搜索这个时期内所有硬币的三倍价值。

这是结构:

 `data_log`(`id`, `moeda`, `moeda_simbolo`, `market_cap`, `volume`, 
            `data_cadastro`, `percent_change_1h`, `percent_change_24h`, 
            `percent_change_7d`, `price_usd`) 
  VALUES   (1, 'Bitcoin', 'BTC', '134001640106', '6628000000.0', 
            '2018-02-11', '-1.07', '-10.47', 
            '-11.75', '7948.84')

存储示例:

(1313, 'Kubera Coin', 'KBR', '1807270.0', '155830.0', '2018-02-11', '-2.27', '-16.9', '-7.76', '0.0157946'),
(1314, 'Renos', 'RNS', '1788409.0', '2235.62', '2018-02-11', '2.0', '-3.49', '-4.48', '0.0536157'),
(1315, 'FujiCoin', 'FJC', '1786980.0', '2300.57', '2018-02-11', '4.67', '-2.84', '-23.1', '0.00137009'),
(1316, 'Bankcoin', 'B@', '1780694.0', '2679.29', '2018-02-11', '3.32', '348.87', '72.86', '0.173021'),

1 个答案:

答案 0 :(得分:0)

  1. 日志中的日期没有一小时。如果你想增加细节,那么你就会遇到问题。

  2. 要达到您想要的效果,您必须总结给定日期范围内的值,并将它们与期间开头的值进行比较。

    SELECT * 
    FROM 
        (SELECT moeda, sum(market_cap) as sum_cap, sum(volume) AS sum_volume 
         FROM data_log 
         WHERE data_cadastro >= '2018-02-11' 
           AND data_cadastro <= '2018-02-18' 
         GROUP BY moeda) 
         AS sum_log
    LEFT JOIN 
        (SELECT * FROM data_log WHERE data_cadastro = '2018-02-11') AS dl 
            ON dl.moeda = sum_log.moeda 
    WHERE (sum_cap - market_cap) / 3 > market_cap 
       OR (sum_volume - volume) / 3 > volume;