【问题标题】:Super-Simple Grouping In SQLSQL中的超简单分组
【发布时间】:2024-04-25 19:00:02
【问题描述】:

这可能很愚蠢,但我似乎无法弄清楚。

我已经写了这段代码:

SELECT CoID,
       Job,
       Sum(ActualCost) AS TotalCost
FROM   Database
WHERE  Job = RandomJob
GROUP BY CoID, Job, ActualCost
HAVING ActualCost <> 0

所以它吐出了这个:

CoID  Job        TotalCost
X     RandomJob  1
X     RandomJob  1
X     RandomJob  2
X     RandomJob  3
X     RandomJob  5
X     RandomJob  8

我想要达到的是:

CoID  Job        TotalCost
X     RandomJob  20

嘲笑我完全没问题,因为这可能很愚蠢,但请帮我解决这个问题。

【问题讨论】:

  • 只要这样做:GROUP BY CoID, JobHAVING SUM(ActualCost) &lt;&gt; 0

标签: sql select group-by sum


【解决方案1】:

只需从group by 子句中删除列ActualCost,因为您希望sum() 此列中的值覆盖具有相同CoIDJob 的行组。

如果您希望根据总成本筛选行组,可以使用having 子句。

SELECT CoID,
       Job,
       Sum(ActualCost) AS TotalCost
FROM   Database
WHERE  Job = 'RandomJob'
GROUP BY CoID, Job
HAVING Sum(ActualCost) <> 0

请注意,由于您已经在 Job 上进行过滤,因此您最好从 SELECTGROUP BY 子句中删除此列(此值是固定的)。

【讨论】:

  • 谢谢,非常感谢!
最近更新 更多