SQL 查询 - 分组并计算最大值 - 最小值
Posted
技术标签:
【中文标题】SQL 查询 - 分组并计算最大值 - 最小值【英文标题】:SQL Query- Partition into groups & calculate max- min value 【发布时间】:2012-09-19 17:40:04 【问题描述】:在 Oracle 数据库中的 SQL 查询方面需要您的帮助。当事件 =“开始”时,我有想要分组的数据。例如。第 1-6 行是一个组,第 7-9 行是一个组。我想忽略事件 =“忽略”的行。最后我想计算这些组的 max(Value)-min(Value)。我没有办法对数据进行分组。
这可以实现吗?是否可以通过 Event = start 使用分区。相同的数据如下:
行事件值要求结果是值的最大值-最小值 1 开始 10 2个11 3乙12 4 C 13 5 天 14 6 E 15 5 ------------------------------------------ 7 开始 16 8个18 9 乙 20 4 ------------------------------------------ 10 开始 27 11 一个 30 12乙33 13 C 34 7 ------------------------------------------ 14 忽略 35 ------------------------------------------ 15 忽略 36 ------------------------------------------ 16 开始 33 17一34 18 乙 35 19 C 36 20 天 37 21 东 38 5 --------------------------------------------------------【问题讨论】:
【参考方案1】:是的,您可以在 SQL 中执行此操作。
以下查询首先通过查找行 id 之前的最大开始来查找行所在的组。此版本使用相关子查询进行此计算。
然后对 id 进行分组并进行计算。
select groupid, max(value) - min(value)
from (select t.*,
(select max(row) from t t2 where t2.row < t.row and t2.event = start
) as groupid
from t
) t
where event <> 'IGNORE'
【讨论】:
以上是关于SQL 查询 - 分组并计算最大值 - 最小值的主要内容,如果未能解决你的问题,请参考以下文章