groupby分组后获得每组中时间最⼤的那条记录
版权声明:本⽂为博主原创⽂章,未经博主允许不得转载。 blog.csdn/u012660464/article/details/78605078
⽤途:
GROUP BY 语句⽤于 对⼀个或多个列对结果集进⾏分组。
例⼦:
原表:现在,我们希望根据USER_ID 字段进⾏分组,那么,可使⽤ GROUP BY 语句。
我们使⽤下列 SQL 语句:
groupby分组结果集类似这样:
可以看到上⾯的,结果的确是根据 USER_ID 进⾏分组了,但是返回的记录是 USER_ID 对应的每组 中最⼩的那条记录。也就是ID 最⼩的那条。现在我想分组后得到,last_updated_date 最⼤的那条记录。这怎么实现呢?很简单,直接查询的表默认是以 ID 进⾏顺序排序的,因为分组的时候取的是每组中的第⼀条。所以只需要 使查询的表 按照 last_updated_date 倒叙排序就⾏了。
实现的SQL 如下,这⾥使⽤了嵌套查询。
其中:select * from t_iov_help_feedback  order by USER_ID, LAST_UPDATED_DATE DESC 就相当于⼀个按照USER_ID 升序, last_updated_date 倒叙排序的表了。
查询结果如下:SELECT ID,USER_ID,problems,last_updated_date from t_iov_help_feedback GROUP BY USER_ID;
SELECT ID,USER_ID,problems,last_updated_date  FROM  (select * from t_iov_help_feedback  order by USER_ID, LAST_UPDATED_DATE DESC) b GROUP BY b.USER_ID;
现在取的就是每组中时间最⼤的那条记录了。
当遇到两个不同的表时,可以使⽤以下SQL:
select a.title, t.name, t.price from a
inner join (select * from b order by id, price ) t on t.id = a.b_id group by a.b_id;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。