SQL Group通过在单个列上进行分组,并在同一组中的其他行上重复该值



假设我们有一个如下所示的表

greeting | animal | freq
--------------------------
hello    | dog    | 1
hello    | cat    | 3
nice     | dog    | 1
day      | dog    | 2

我们如何按"问候"分组?并总结"频率"。同时对"动物"保持不同的记录。列?

查询结果应该是:

greeting | animal | freq_sum
-----------------------------
hello    | dog    | 4             <-- value is the sum of the two "hello" records' freq value
hello    | cat    | 4
nice     | dog    | 1
day      | dog    | 2

我知道我们能做到

select greeting, animal, count(freq) as freq_sum
from table
group by greeting

但是,这会导致来自每个组的单个记录(并且我假设它正在对动物列进行隐式MAX ?),相反,我希望聚合和值在具有同一组的所有行中重复。

非常感谢您的建议:)

如果您使用的是maria db 10.2或更高版本,那么您可以使用以下windows函数:

select greeting, animal, sum(freq) over (partition by greeting) as freq_sum
from table

相关内容

最新更新