Сумма умножения столбцов для строк с похожими идентификаторами в MySQL - PullRequest
8 голосов
/ 17 января 2011

У меня есть 3 столбца в таблице под названием «покупки»:

id         amount         price
2          2              21
2          5              9
3          8              5

Я хочу сгруппировать все строки с одинаковыми идентификаторами и в результате получить этот массив:

array([0] => [id => 2, total => 87 (because 2*21+5*9=87)], [1] => [id => 3, total => 40 (because 8*5=40)])

как общая сумма для СУММ (сумма * цена) для строк с одинаковыми идентификаторами .

Я пытался использовать

SELECT id, SUM(p.price*p.amount) total FROM purchases p GROUP by p.id

, но это не работает (т.е. он не достигает того, чего я хочу, о чем я писал выше).Любые идеи о том, как сделать это в MySQL?

Пример того, что запрос возвращает:

    id         amount         price
    2          3              89
    2          3              19

    SELECT id, SUM(p.price*p.amount) total FROM purchases p GROUP by p.id

==> [id => 2, total => 183]

Ответы [ 2 ]

17 голосов
/ 17 января 2011
SELECT
id, 
SUM(amount*price) AS total
FROM mytable
GROUP BY id

Данные:

| id | amount | price |
|----|--------|-------|
| 2  | 3      | 19    |
| 2  | 3      | 89    |
| 3  | 203    | 1     |

Результат:

id  total
2   324
3   203
0 голосов
/ 17 января 2011

@ sombe: Я только что проверил ваш запрос, и он отлично работает.Вы уверены, что ваш mysql обновлен?

alt text

Второй тоже отлично работает:

alt text

...