MySQL第六天 查询结果排序 对结果分组 过滤

可以根据列或别名列对结果进行排序,升序ASC,降序DSC,使用LIMIT限制输出结果数量。

例如:查询LLDP neighbor中的信息,按照接口名字排序,输出前十个.

SELECT * FROM lldptable ORDER BY localintf ASC LIMIT 10; 

也可以指定列的位置,根据第几列排序,而不是写出列的名称‘localintf’

SELECT * FROM lldptable ORDER BY 5 ASC LIMIT 10;

输出结果相同

对结果分组(聚合函数)

可以在列上使用GROUP BY 对结果进行分组,然后使用AGGREGATE(聚合)函数,COUNT/MAX/MIN/AVERAGE等

举例,找出lldp中capbility不同类型的设备数量

SELECT  capbility, COUNT(*) AS count FROM lldptable GROUP BY capbility;

查找最多的设备类型,返回前5种

SELECT deviceid, COUNT(*) AS count FROM lldptable GROUP BY deviceid ORDER BY count DESC LIMIT 5;

SUM 计算列和值:没想到合适的案例练习,先粘过来吧

瞎写一个例子计算holdtime的和吧,按照不同的设备名称

SELECT deviceid, SUM(holdtime) AS sumholdtime FROM lldptable GROUP BY deviceid  HAVING sumholdtime >1200 ORDER BY sumholdtime DESC LIMIT 20; 

AVERAGE 计算平均值,同样。

SELECT deviceid, AVG(holdtime) AS avgholdtime FROM lldptable GROUP BY deviceid ORDER BY avgholdtime DESC LIMIT 20; 

DISTINCT: 过滤出表中的不同条目

使用HAVING过滤:

通过having过滤 group by的结果,接上面示例,找到sum 时间大于1200的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容