如何在不使用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;