MySQL:如何添加指定的行

标签 mysql sql

示例表

+----+---------+--------+-------+
| PK | Comp    | Amount | Class |
+----+---------+--------+-------+
| A1 | Alpha   |  2.00  |  BA   |
| A1 | Alpha   |  2.00  |  BA   |
| B1 | Bravo   |  1.50  |  BA   |
| B1 | Bravo   |  1.50  |  BA   |
| C1 | Charlie |  2.00  |  BC   |
| C1 | Charlie |  2.00  |  BC   |
| D1 | Delta   |  2.20  |  BC   |
| D1 | Delta   |  2.20  |  BC   |
| D2 | Delta   |  1.70  |  BC   |
| D2 | Delta   |  1.70  |  BC   |
| E1 | Echo    |  3.10  |  BD   |
| E1 | Echo    |  3.10  |  BD   |
| E2 | Echo    |  3.00  |  BD   |
| E2 | Echo    |  3.00  |  BD   |
| E3 | Echo    |  2.90  |  BD   |
| E3 | Echo    |  2.90  |  BD   |
| E4 | Echo    |  2.50  |  BD   |
| E4 | Echo    |  2.50  |  BD   |
| E5 | Echo    |  3.10  |  BD   |
| E5 | Echo    |  3.10  |  BD   |
+----+---------+--------+-------+

我如何ADD每个PK的第一个值?我一直在用
SUM(Amount) AS TotalAmount...GROUP BY Class

结果是这样的

+----+---------+--------+-------+-------------+
| PK | Comp    | Amount | Class | TotalAmount |
+----+---------+--------+-------+-------------+
| A1 | Alpha   |  2.00  |  BA   | 7.00        |
| C1 | Charlie |  2.00  |  BC   | 11.80       |
| E1 | Echo    |  3.10  |  BD   | 29.20       |
+----+---------+--------+-------+-------------+

它添加了所有的Amount
我使用了 SUM(MAX(Amount)) AS TopAmount 但出现了错误。
我想要这张 table

+----+---------+--------+-------+-------------+
| PK | Comp    | Amount | Class | TotalAmount |
+----+---------+--------+-------+-------------+
| A1 | Alpha   |  2.00  |  BA   | 3.50        |
| C1 | Charlie |  2.00  |  BC   | 5.90        |
| E1 | Echo    |  3.10  |  BD   | 14.6        |
+----+---------+--------+-------+-------------+  

像这样只是每个PK

的第一个数据
+-------------------+-------+-------------+
| Amount            | Class | TotalAmount |
+-------------------+-------+-------------+
| (A1+B1)           |  BA   | 3.50        |
| (C1+D1+D2)        |  BC   | 5.90        |
| (E1+E2+E3+E4+E5)  |  BD   | 14.6        |
+-------------------+-------+-------------+  

谢谢你的时间..

最佳答案

试试这个。将 t1 替换为您的表名

SELECT GROUP_CONCAT(PK SEPARATOR '+'), Class ,SUM(Amount) AS 
TotalAmount FROM 
(SELECT DISTINCT PK, Comp, Amount, Class FROM t1) AS t2  
GROUP BY Class;

关于MySQL:如何添加指定的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48679322/

相关文章:

php mysql 查询语句

mysql - 在 Node.js 中获取一行中的所有条目以及不带时区的 MySQL DATE 条目

mysql - 将 MySQL 转储文件恢复到数据库中

sql - Oracle SQL 查询 : how to use count

mysql - 获取 MySQL 表中每小时的整数总和

php - 更改图像或使用 php 表单保留旧图像

php - 如何只对这样的事情进行一次查询

mysql - 在 MySQL 中的 order by 上指定 `asc` 是不必要的吗?

sql - 单个 ID 上的列拆分总和

mysql - 我在下表之间建立了多对多关系,我做得对吗?其次我想要对他们进行联接查询