求符合MSSQL语法的统计应用使用总时长前5名的SQL语句
问题分析
你原有SQL的错误点如下:
- 误用窗口函数
SUM() OVER(),没有通过GROUP BY做分组聚合,会返回和原始表行数一致的重复记录,达不到按应用去重汇总的效果 - 字段名引用错误,你提供的表结构中存储时长的字段是
Duration,不是SQL里写的DurationHrs
符合MSSQL语法的正确查询语句
SELECT TOP 5 AppName, SUM(Duration) AS TotalDuration FROM ApplicationInfo GROUP BY AppName ORDER BY TotalDuration DESC
逻辑说明
- 先通过
GROUP BY AppName将相同应用名称的记录合并为一组 - 用
SUM(Duration)计算每个应用的总使用时长,指定别名TotalDuration方便后续排序调用 - 按
TotalDuration做降序排序后,用MSSQL原生支持的TOP 5语法取排名前5的记录,完全符合你的需求
内容的提问来源于stack exchange,提问作者Person
相关产品推荐
相关产品推荐

