如何在不使用group by的情况下,按postgresql中字段的count()对查询结果进行排序

如何在不使用group by的情况下,按postgresql中字段的count()对查询结果进行排序,sql,postgresql,Sql,Postgresql,我有一个简单的数据库,我想我的答案应该很简单,但我找不到我的答案,数据库是这样的: ----------------- name | ip ----------------- nick |192.168.1.10 john |192.168.1.1 john |192.168.1.2 john |192.168.1.3 lucy |192.168.10.1 lucy |192.168.10.2 我需要一个查询,返回所有的行,但结果按每个名称的计数(ip)排序 上述列表的结果应该是: -----

我有一个简单的数据库,我想我的答案应该很简单,但我找不到我的答案,数据库是这样的:

-----------------
name | ip
-----------------
nick |192.168.1.10
john |192.168.1.1
john |192.168.1.2
john |192.168.1.3
lucy |192.168.10.1
lucy |192.168.10.2
我需要一个查询,返回所有的行,但结果按每个名称的计数(ip)排序 上述列表的结果应该是:

------------------
name |ip
------------------
nick |192.168.1.10
lucy |192.168.10.1
lucy |192.168.10.2
john |192.168.1.1
john |192.168.1.2
john |192.168.1.3
这里有一个

试试这句话

SELECT * FROM tblSAMPLE ORDER BY name DESC,ip
请尝试以下查询:

SELECT t1.* 
FROM   table1 t1 
       INNER JOIN (SELECT Count(name) counter, 
                          name 
                   FROM   table1 
                   GROUP  BY name)t2 
               ON t1.name = t2.name 
ORDER  BY counter; 

安斯比 Subash M


是否需要告诉正确答案Y/N?

这应该比表上的自联接快

select name, ip
from (
  select name,
         ip,
         count(*) over (partition by name) as cnt
  from the_table
) t
order by cnt;

它工作得很好,除了我必须更改一些表名和字段名之外,“name”是pgsql中的保留关键字:)谢谢你欢迎我的朋友,如果这是真实答案,请单击它作为真实答案;)请修复您的答案(count()应该在IP字段上)我检查了它作为真实答案谢谢我的朋友,在这里使用
count(*)
count(name)
count(IP)
之间没有任何区别,因为它们都会计算
按名称分组
的行。我有错误:语法错误在“(”在您的查询中,
keep…
是Oracle特有的,Postgres不支持
select name, ip
from (
  select name,
         ip,
         count(*) over (partition by name) as cnt
  from the_table
) t
order by cnt;