mysql - 按 2 列分组并计数,然后对每个密钥对的计数进行排序
问题描述
很可能这个问题已经得到解答,但我并没有真正找到解决方案:
我有这样的事情:
使用此查询:
SELECT
deparment,
device,
count(*) as times
FROM
routines
GROUP BY
device,
deparment
ORDER BY
times DESC;
The result would come like this:
3 "A" 7337
2 "A" 5875
1 "A" 3242
3 "B" 1937
2 "B" 1866
3 "C" 1609
1 "B" 1580
3 "D" 1493
但我想按每个设备排序,所以输出应该是这样的:
3 "A" 7337
2 "A" 5875
1 "A" 3242
3 "B" 1937
2 "B" 1866
1 "B" 1580
3 "C" 1609
3 "D" 1493
所以计数字段应该从多到少排序,但必须按每个设备分组
解决方案
我认为您需要两个排序键:
ORDER BY device, times DESC;
如果您也想对设备进行排序,因此最大的设备在前,您可以使用窗口函数:
ORDER BY sum(times) over (partition by device) DESC, device, times DESC
推荐阅读
- css - 基于容器宽度的CSS变换比例
- angular - Angular 5 上的 LINE 共享插件
- sql-server - 如何停止显示“进行中”状态的 SQL 作业?
- mysql - 限制对计数无效?mysql
- google-bigquery - 使用 Appengine 将数据流式传输到 Bigquery
- maven - 由于连接重置错误,AWS 中的 Maven 工件传输失败
- java - 在构造函数中创建 XML
- mysql - 显示在 1981 年头两个月雇用至少两名商业乘客的 OOUR 的名称和城镇
- eloquent - 使用 laravel 和 Eloquent 对表和数据透视表进行级联更新
- c# - 设置位置 StreamReader 不起作用读取仅附加文本文件