这是一个包含 2 列的示例表。
id | name
------------
1 | hello
2 | hello
3 | hello
4 | hello
5 | world
6 | world
7 | sam
8 | sam
9 | sam
10 | ball
11 | ball
12 | bat
13 | bat
14 | bat
15 | bat
16 | bat
上表中是出现次数
hello - 4
world - 2
sam - 3
ball - 2
bat - 5
如何在 psql 中编写查询,以便输出将从特定名称的最大出现次数排序到最小出现次数?即像这样
bat
bat
bat
bat
bat
hello
hello
hello
hello
sam
sam
sam
ball
ball
world
world
最佳答案
您可以使用临时表来获取所有名称的计数,然后将其JOIN
到原始表中进行排序:
SELECT yt.id, yt.name
FROM your_table yt INNER JOIN
(
SELECT COUNT(*) AS the_count, name
FROM your_table
GROUP BY name
) t
ON your_table.name = t.name
ORDER BY t.the_count DESC, your_table.name DESC
关于sql - 根据特定项目出现的次数对表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30657874/