2014-01-30 4 views
0

Привет Я пытаюсь найти разницу между средним значением нескольких значений из одного столбца.Mysql - Выберите разницу в среднем из того же столбца

А вот схема.

CREATE TABLE `product_priceDiff` (
    `mark` char(15) NOT NULL, 
    `markId` int(11) NOT NULL, 
    `found_date` date DEFAULT '0000-00-00', 
    `found_price` decimal(15,3) DEFAULT NULL, 
    `confirmation_date` date DEFAULT '0000-00-00', 
    `confirmed_price` decimal(15,3) DEFAULT NULL, 
    `price_difference` decimal(15,3) DEFAULT NULL, 
    `action` char(30) DEFAULT NULL, 
    PRIMARY KEY (`mark`,`markId`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 

А вот некоторые примеры значений

+------------------+----------+------------+-------------+-------------------+-----------------+------------------+--------+ 
| mark    | markId | found_date | found_price | confirmation_date | confirmed_price | price_difference | action | 
+------------------+----------+------------+-------------+-------------------+-----------------+------------------+--------+ 
| soap    |  6 | 2014-01-13 |  0.410 | 2014-01-15  |   0.420 |   2.439 | BUY | 
| lotion   |  7 | 2013-09-13 |  0.000 | 2013-09-13  |   0.170 |   0.000 | BUY | 
| shaving_cream |  8 | 2014-01-09 |  41.500 | 2014-01-10  |   42.000 |   1.205 | BUY | | 
| hairgel   |  19 | 2014-01-13 |  8.220 | 2014-01-16  |   8.190 |   -0.365 | SELL | 
| aftershaves  |  20 | 2011-07-12 |  0.000 | 2011-07-12  |   7.500 |   0.000 | SELL | 
| shampoo   |  21 | 2014-01-14 |  46.870 | 2014-01-17  |   46.480 |   -0.832 | SELL | 
+------------------+----------+------------+-------------+-------------------+-----------------+------------------+--------+ 

Что я хочу найти это средняя разница в цене. Формула

Average(price_difference) @ BUY - Average(price_difference) @ SELL 

я попытался сделать это, используя этот запрос, но он не работает на всех

SELECT 
    AVG(CASE WHEN `action` = "BUY" THEN `price_difference`) 
    - AVG(CASE WHEN `action` = "SELL" THEN `price_difference`) 
    FROM `product_priceDiff`; 

Это дает мне ошибку

ERROR 1064 (42000): Вы ошибка в синтаксисе SQL; проверить руководство, которое соответствует Вашей версии сервера MySQL для синтаксиса право использовать вблизи «действие =„BUY“, то price_difference) - ср (случай , когда действие =„SELL“, то цена» в строке 1

Просьба представить какие-либо советы о том, что я должен сделать, чтобы получить требуемые значения Спасибо, заранее

Maxx

+1

вас youst miss'END'statement по делу: 'случай, когда ТОГДА Melon

+0

END' Да что работал ошибка прошло. – Maxx

ответ

1

записать:..

проблема в том, «синтаксис» из CASE statement

CASE WHEN <condition> THEN <action> END 

Вы пропустите END

+0

Да, теперь это работает. Я раньше не знал о правильном синтаксисе SELECT CASES. Спасибо за ответ. – Maxx

Смежные вопросы