文章详细

当前位置 : 首页 > 技术文档 > 编程与代码

MySQl分组显示组内前N条记录

* 来源 : * 作者 : * 发表时间 : 2014-04-02 * 浏览 : 77
需求描述:

当我们使用group by的时候,经常是结合max或者min等聚合函数来使用。

因为按group by显示时每个group尽管含有n项,但是只显示一项。

而当我们需要显示组内的top n项时,就需要采取一些处理。

这里需要结合使用的聚合函数:

1.group_concat

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

这个函数的返回结果是一个字符串。

2.concat

CONCAT(str1,str2,…)  

3.substring_index

字符串截取:substring_index(目标字符串,分隔符,截取到第几个分隔符之前)



需求实现:

mysql> select log_day,substring_index(group_concat( concat(site,':',pv_sum) order by pv_sum desc separator '|'),'|',5) from log_report_new_site group by log_day;