从一列定义的组中选择最小值/最大值作为另一列的子组 - SQL、HPVertica

Meg*_*gan 5 sql max min vertica partition

我试图在另一个组的子组中找到最小和最大日期。这是示例“数据”

ID   Type  Date
1     A    7/1/2015
1     B    1/1/2015
1     A    8/5/2014
22    B    3/1/2015
22    B    9/1/2014
333   A    8/1/2015
333   B    4/1/2015
333   B    3/29/2014
333   B    2/28/2013
333   C    1/1/2013
Run Code Online (Sandbox Code Playgroud)

我想确定的是 - 在一个 ID 中,每个相似类型块的最小/最大日期是多少?所以对于 ID # 333,我想要以下信息:

A: min & max = 8/1/2015
B: min = 2/28/2013
   max = 4/1/2015
C: min & max = 1/1/2013
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何在一组 ID 中仅识别不间断的 Type 分组。对于 ID #1,我需要保留两个具有单独最小/最大日期的“A”类型,因为它们被类型“B”分割,所以我不能只为 ID #1 提取所有类型 A 的最小日期,它必须是两个单独的实例。

我尝试过的是类似于下面两行的内容,但是这两行都没有准确捕获上面提到的 ID #1 类型 B 中断类型 A 的情况。

Max(Date) OVER (Partition By ID, Type)

or this:
Row_Number() OVER (Partition By ID, Type ORDER BY Date DESC)
  ,then selecting Row #1 for max date, and date ASC w/ row #1 for min date
Run Code Online (Sandbox Code Playgroud)

感谢您提供的任何见解!