我有一张这样的table,
| id | name | subtask | maintask |
|----|------|---------|----------|
| 1 | t1 | 11 | 20 |
| 1 | t1 | 12 | 20 |
| 1 | t1 | 1 | 30 |
| 2 | t1 | 2 | 20 |
| 2 | t1 | 2 | 20 |
我想准备一个这样的结果
| id | name | sum_of_subtask | sum_of_maintask | diff |
|----|------|----------------|-----------------|------|
| 2 | t1 | 4 | 40 | 36 |
需要选择max id,然后对子任务和主任务求和,最后一列是sum(子任务)和sum(主任务)的差
我在下面尝试了这个查询,但它是在计算所有列的总和。
select max(id), name, sum(subtask),sum(maintask),sum(subtask-maintask) from tbl
group by name
3条答案
按热度按时间vfh0ocws1#
8xiog9wr2#
你只想要一排吗?如果是,请使用
order by
以及limit
:如果您的数据很大,在聚合之前进行筛选可能会更有效:
如果你想要最大的
id
每name
,则过滤逻辑为:mqxuamgl3#
请使用下面的查询,