PG中文社区 /
mdi-home
首页
社区新闻
中文文档
加入ACE
相关资料
mdi-chevron-down
{{ item.text }}
登录
mdi-home
首页
mdi-chat-processing
社区新闻
mdi-book-open-variant
中文文档
mdi-account-multiple-check
加入ACE
mdi-file-multiple-outline
相关资料
mdi-blank
{{item.text}}
mdi-exit-to-app
退出账号
首页
-->
有问有答
-->
使用技巧
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软件
您还没有登录,请您登录后再发表回复
加入我们
QQ群1:5276420
QQ群2:3336901
QQ群3:254622631
文档群:150657323
文档翻译平台:
按此访问
社区邮件列表:
按此订阅
商业支持
成都文武信息技术有限公司
杭州乘数科技有限公司
阿里云
华为云
青云(北京优帆科技有限公司)
扫码关注
加入我们
QQ群1:5276420
QQ群2:3336901
QQ群3:254622631
文档群:150657323
文档翻译平台:
按此访问
社区邮件列表:
按此订阅
商业支持
成都文武信息技术有限公司
杭州乘数科技有限公司
阿里云
华为云
青云(北京优帆科技有限公司)
扫码关注
© PostgreSQL中文社区 ... (自2010年起)