Toggle navigation
PostgreSQL中文社区
首页
(current)
社区新闻
中文文档
加入ACE
相关资料
了解PostgreSQL
PostgreSQL相关文档
PostgreSQL软件下载
PostgreSQL中文图书
社区年会PPT资料
关于中文社区
注册
登录
全部
Bug
使用技巧
内容问题
建议
系统安装
集群复制
其他
首页
有问有答(FAQ)
【】
类主题列表
wzf1943
小白请教一个 top 50的问题 ...
... 2019-09-25 07:47:56+08...1楼
### 想请教一个关于如何构造一个 top 50的问题 - 表1 ``` name root type .... file1 1 json file2 2 zip file3 1 zip file4 8 zip file4 1 tar .......... ``` - 表2 ``` repo root repo1 1 repo2 2 ........ ``` 我现在想构造一个 query,这个query 可以返回 表1 拥有file 最多的 top 50个 root 以及每个root所对应的file的数量是多少 和 root对应的 repo的名字是什么。 我自己的实现方法是,先把所有的dinstinct的 root id 存到一个表里, 然后用那个root id 去query file的表 去看每个 root id 都存了多少的files数量,最后再排序。 但是这个方法不是特别的好,感觉效率比较低,并且需要我在服务层去重复ping database。因为对 postgres不是很熟悉,所有想问问大佬谁能够给小弟点拨一番。
我的签名:
doudou586
回复: ...
... 2019-10-02 11:00:47+08...2楼
**我试着写一下SQL,PostgreSQL支持很丰富的SQL特性,应只需要一次数据库查询** ``` select A.root, B.repo, A.filenum from ( select root, count(*) as filenum from 表1 group by root order by count(*) desc limit 50 ) A left join 表2 on A.root=B.root order by A.filenum desc ``` 注意,如你的表1的root与表2的root不是外键关联的话,有可能有些root在表1有用了,但从表2查不出名字,此时结果中名字会显示为null。。。
我的签名:天天要用的管理软件 -- 坎普ERP软件
您还没有登录,请您登录后再发表回复
© 2010 PostgreSQL中文社区