Mysql sum和max与昨天数据的组合

时间:2014-01-02 19:21:44

标签: php mysql

嗨,这一切可能都是愚蠢的问题,但无法弄明白。我有一张包含这些数据的表格:

+--------------+--------+--------+---------------+-------------+
| company_code | ltp    | ycp    | datetime      | total_value |
+--------------+--------+--------+---------------+-------------+
| ABC          | 291.00 | 342.00 | 9/25/13 10:30 |    12540    |   
| ABC          | 344.00 | 342.00 | 9/25/13 10:31 |    15400    |
+--------------+--------+--------+---------------+-------------+

如您所见,数据每分钟都在更新,我需要找到的价格变化是(ltp-ycp)/ ycp。所以我写这个查询:

SELECT
  company_code, max(ltp), ycp, sum((max(ltp) - ycp)/ycp) as change  
FROM eod_stock 
GRPUP BY company_code 
ORDER BY change DESC; 

但这会产生错误

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to    your MySQL server version for the right syntax to use near 'change  FROM eod_stock GRPUP BY company_code ORDER BY change DESC'

没有找到解决方案,因为我需要最后的交易价格 - 昨天的价格(ycp),但不知道如何使用和最大值。

另一个问题我需要找到最后几天总交易量在表中显示9/25/2013但我需要最后插入的总交易量为9/24/2013

我用过     从eod_stock限制10中选择max(total_trade),datetime - interval;也得到错误。任何人都可以想到如何摆脱这个错误?

2 个答案:

答案 0 :(得分:0)

您可以尝试以下

    SELECT
     `c_code`, `m_lcp`, `ycp`,sum(`change`)
    from
    (
     select `company_code` as `c_code`, max(`ltp`) as `m_lcp`, `ycp`,(max(`ltp`) -   `ycp`)/`ycp` as `change`  from `eod_stock` 
    group by `company_code`
    ) `e1`
    order by `change` DESC; 

答案 1 :(得分:0)

试试这个:

SELECT
  `company_code`, max(`ltp`), `ycp`, (max(`ltp`) - `ycp`)/`ycp`) as `change`  
FROM `eod_stock` 
GROUP BY `company_code` 
ORDER BY `change` DESC; 

您已将关键字GROUP写错了

编辑:不需要SUM();)