按2列分组,然后进行计数,然后对每个密钥对的计数进行排序

时间:2020-05-05 23:44:19

标签: mysql sql postgresql

很可能已经回答了这个问题,但是我真的没有找到解决方法:

我有这样的东西:

使用此查询:

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

因此,计数字段应从多到少排序,但必须按每个设备分组

1 个答案:

答案 0 :(得分:0)

我认为您需要两个排序键:

ORDER BY device, times DESC;

如果您还想对设备进行排序,那么最大的设备是第一,您可以使用窗口函数:

ORDER BY sum(times) over (partition by device) DESC, device, times DESC
相关问题