如何使用 SQL 对多行的列值求和
How to SUM column values from multiple rows with SQL
我在 MySQL 中有一个 table 列出了用户购买的股票(因此同一股票有多行不同的价格和数量)。
我想知道如何仅列出所有股票的总和以及在该股票上花费的总金额的唯一股票。
因此,例如,这是原始的 table、
+------------+--------+-----------+
| 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 |
+------------+--------+-----------+
和 table 的 select 得到股票*价格,
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
对多个列和行求和。
提前致谢!
只需分组:
select ticker , sum(shares), sum(spent)
from bought
group by ticker
order by ticker;
对 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;
我在 MySQL 中有一个 table 列出了用户购买的股票(因此同一股票有多行不同的价格和数量)。
我想知道如何仅列出所有股票的总和以及在该股票上花费的总金额的唯一股票。
因此,例如,这是原始的 table、
+------------+--------+-----------+
| 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 |
+------------+--------+-----------+
和 table 的 select 得到股票*价格,
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
对多个列和行求和。
提前致谢!
只需分组:
select ticker , sum(shares), sum(spent)
from bought
group by ticker
order by ticker;
对 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;