mysql - 按降序排除重复项的行总和

标签 mysql sql

我有一个表格如下

+----+---------+-------------+--------+
| id | user_id | ip_address  | amount |
+----+---------+-------------+--------+
|  1 |       2 | 192.168.1.1 | 0.5    |
|  2 |       2 | 192.168.1.1 | 0.5    |
|  3 |       2 | 192.168.1.2 | 0.5    |
|  4 |       2 | 192.168.1.3 | 0.5    |
|  5 |       5 | 192.168.5.1 | 1.5    |
|  6 |       5 | 192.168.5.1 | 1.5    |
|  7 |       5 | 192.168.5.3 | 0.5    |
+----+---------+-------------+--------+

我想获得 amount 的唯一 ip_address SUM,并将重复项计为一个。

从上表中有 7 行,前 4 条记录是 user_id 2,后 3 条记录是 user_id 5。

我正在尝试按降序对 amount 字段和 user_id 求和,并希望输出如下。

user_id    total_amount
5          2.0
2          1.5

最佳答案

试试这个方法:

select user_id, sum(amount)
from (select user_id, ip_address, amount
      from  tab 
      group by  ip_address, amount ) A
group by  user_id
order by  user_id desc

SqlFiddle演示

关于mysql - 按降序排除重复项的行总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29922956/

相关文章:

mysql - 用案例更新表

sql - 在 Redshift 中将多行透视为列

sql - Postgres 查询运行很慢

sql - 如何在基于多列的表上分配唯一 ID

mysql - MySQL 中与 timediff 语句联合

php - Python无法连接MySQL

mysql - mysql 中的 max() 返回 9999

java - HQL 字符串左侧

JAVA MySQL连接ClassNotFound异常

sql - 替换 PostgresQL 中 '@' 之后的所有电子邮件地址