keep可以理解为MIN, MAX的扩展。如果你在GROUP BY的结果里,需要的不是最小、最大值,而是对应最小、最大值的那个行的其他列,就可以用KEEP。
比如 MIN(HIRE_DATE) ... GROUP BY DEPARTMENT 这是求每个部门最早的员工就职日期,如果你还需要该日期对应的姓名,就用
MIN(NAME) KEEP(DENSE_RANK FIRST ORDER BY HIRE_DATE) ... GROUP BY DEPARTMENT
注意这仍然遵循分组聚合的定义,每个部门只会返回一行,也就是说如果有两个人同样都是最早入职的那么只会返回NAME最小的那个
比如 MIN(HIRE_DATE) ... GROUP BY DEPARTMENT 这是求每个部门最早的员工就职日期,如果你还需要该日期对应的姓名,就用
MIN(NAME) KEEP(DENSE_RANK FIRST ORDER BY HIRE_DATE) ... GROUP BY DEPARTMENT
注意这仍然遵循分组聚合的定义,每个部门只会返回一行,也就是说如果有两个人同样都是最早入职的那么只会返回NAME最小的那个
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8520577/viewspace-756966/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8520577/viewspace-756966/