#mysql #sql #sum #mariadb
Вопрос:
У меня есть таблица в MySQL, в которой перечислены покупки акций пользователя (так что есть несколько строк одного и того же запаса с разными ценами и количеством).
Я хотел бы знать, как я могу перечислить уникальные акции, указав только сумму всех акций и общую сумму, потраченную на эти акции.
Так, например, вот исходная таблица,
------------ -------- -----------
| ticker | shares | price |
------------ -------- -----------
| AMARAJABAT | 5 | 720.0000 |
| AMARAJABAT | 5 | 732.0000 |
| ENDURANCE | 2 | 1650.0000 |
| ENDURANCE | 2 | 1750.0000 |
| EXIDEIND | 21 | 163.5000 |
| EXIDEIND | 21 | 172.1000 |
------------ -------- -----------
и выберите из таблицы, чтобы получить акции*цена,
SELECT ticker,shares,price,shares*price AS spent FROM bought ORDER BY ticker;
------------ -------- ----------- ------------
| ticker | shares | price | spent |
------------ -------- ----------- ------------
| AMARAJABAT | 5 | 720.0000 | 3600.0000 |
| AMARAJABAT | 5 | 732.0000 | 3660.0000 |
| ENDURANCE | 2 | 1650.0000 | 3300.0000 |
| ENDURANCE | 2 | 1750.0000 | 3500.0000 |
| EXIDEIND | 21 | 163.5000 | 3433.5000 |
| EXIDEIND | 21 | 172.1000 | 3614.1000 |
------------ -------- ----------- ------------
И я хотел бы фактически суммировать значения столбцов акций (для одной и той же акции) и сумму, потраченную на каждую. т. е. вывод,
------------ ------------- ------------
| ticker | SUM(shares) | SUM(spent) |
------------ ------------- ------------
| AMARAJABAT | 10 | 7260.0000 |
| ENDURANCE | 4 | 6800.0000 |
| EXIDEIND | 42 | 7047.6000 |
------------ ------------- ------------
но, похоже, не могу понять, как я могу суммировать несколько столбцов и строк ticker
.
Заранее спасибо!
Комментарии:
1.
GROUP BY ticker
?2. не работает 🙁 (показывает только акции и цену последней строки, соответствующие каждому тикеру)
Ответ №1:
просто сгруппируйтесь по :
select ticker , sum(shares), sum(spent)
from bought
group by ticker
order by ticker;
Ответ №2:
Суммируйте shares
и shares
* price
и сгруппируйте по ticker
.
SELECT ticker, SUM(shares) AS 'Total Shares', SUM(shares * price) AS `Total Spent`
FROM bought
GROUP BY ticker
ORDER BY ticker;