今天遇到个有意思的问题,是一个分组排序的问题,不过要求分组和分组间也要排序,如果这个组内有一条数据是最近更新的,那么这整个组都应该排在前面。 下面以Oracle的HR示例Schema中的employees表为例: 语句按部门分组,分组之间的排序是这样的:如果整个分组中有一个员工的hire_date是最新的,那么这个分组就应该排在其他分组的前面。分组内部的排序也是按照hire_date来排的。 SQL语句如下,在Oracle 10g XE中通过测试 SELECT oe.department_id, oe.employee_id, oe.last_name,oe.hire_date,sq.maxd FROM employees oe JOIN ( SELECT e.department_id,max(e.HIRE_DATE) maxd FROM employees e GROUP BY e.department_id ORDER BY maxd desc ) sq ON oe.department_id=sq.department_id ORDER BY sq.maxd desc,oe.hire_date |