繁体   English   中英

如何跨多个字段执行聚合函数逻辑?

[英]How can I perform aggregate function logic across multiple fields?

如何获得来自同一记录的三个维度的max()?

说明:我有大量来自多个来源的具有多个属性的窗口小部件。 考虑一下手动数据输入,在这里您要由不同的人输入相同的内容,然后需要合并差异。 不过,我只是想执行一些逻辑,以便在特定条件下选择一个值,而不是审核每个差异。

举一个类似的例子:如果一个来源说小部件xyz重3磅,而来源b说小部件xyz重4磅,那么我只是盲目地拿了4磅,因为它更大,并且说我在包装/运输时要格外小心。 那很简单,我选择MAX()。

现在,我有一组属性,这些属性位于单独的字段中但相关。 考虑盒子的尺寸。 有宽度/长度/高度字段。 如果一个消息源说“尺寸”是2x3x4,而另一个消息源说是3x3x4,则出于与上述相同的原因,我需要采用较大的尺寸。 听起来也像MAX(),除了...

我的消息来源不同意是宽度,高度或长度。 可以输入2x3x4框为4x3x2或2x4x3,这取决于源如何看待它。 如果我最多使用3个这样的信号源,即使所有3个信号源都正确测量了它,我最终也会得到4x4x4的分辨率。 这是不希望的。

如何获得最大的“测量”值,但要确保所有三个值都来自同一记录?

如果“最大”是不可能的,我们可以选择唯一的...除了第四个来源,它有大约40%的小部件都有0x0x0。 如果其他任何来源实际上测量了该小部件,则我不能留下0x0x0。

一些样本数据

ID,widget_name,height,width,leng
(a1,widget3,2,3,4)
(b1,widget3,2,4,3)
(c1,widget3,4,3,2)
(d1,widget3,0,0,0)

输出应为(widget3,4,3,2)

你可以用row_number代替group by

select * from 
(select data, ID,widget_name,height,width,leng, ROW_NUMBER() over ( partition by widget_name order by height + width + leng desc ) rowid
from yourTable
) as t
where rowid = 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM