sql - PostgreSQL选择出现最多次数的行
问题描述
我有 3 张桌子。1 是包含启动 id 和名称的初创公司,1 是 Investor_groups,包含投资者 ID 和投资者组名称,1 是交易,其中包含 startup_id - 提交资金申请的初创公司的 id,investor_group_id - 提交资金申请的投资者组的 id这家初创公司向其提交了资金申请。
我必须找到提交申请最多的初创公司,以及他们申请的组的名称。
我想做的是——
SELECT S.name AS Startup_name, COUNT(S.name) as num
FROM deals D
INNER JOIN startups S ON D.startup_id = S.id
INNER JOIN investor_groups I ON D.investor_group_id = I.id
GROUP BY Startup_name
ORDER BY num DESC
LIMIT 2
但这给了我结果-
启动名称,编号
HJ 公司,3
冰沙,3
我想要的是——
启动名称,投资者名称
HJ 公司,美国广播公司
HJ公司
HJ公司
冰沙,xyz
冰沙,第一
冰沙,lmn
当我在 SELECT 语句中添加投资者组名称时,它向我显示一个错误,即投资者组名称需要在 GROUP BY 语句中。
表格中的样本数据 -
对于表“初创公司” 初创公司
对于表“investor_groups” investor_groups
对于表“交易” 交易
解决方案
你可以尝试使用count() over()
SELECT
S.name AS Startup_name
, I.name AS investor_name
, COUNT(*) over(partition by S.name) AS num
FROM deals D
INNER JOIN startups S ON D.startup_id = S.id
INNER JOIN investor_groups I ON D.investor_group_id = I.id
ORDER BY num DESC, Startup_name, investor_name
推荐阅读
- r - ggplot2的操纵()滑块功能不起作用
- python - 未找到“”的反向。- 姜戈
- unity3d - 子弹没有以固定速度增加力量?如何在 2D 中正确地从左右两侧独立拍摄?
- python-3.x - Python 非阻塞服务器
- reactjs - React中控制反转的困惑
- spring-boot - 基本身份验证不适用于 POST 端点
- javascript - 默认隐藏表格行 - 按钮显示?
- java - 我有 5 个按钮我想更改 mediaPlayer 源 fonClick 的按钮怎么做?
- c# - 从下载字符串获取信息后,如何将文本框中的数据拆分为多行?
- postgresql - 如何自动将多个表从一个模式移动到 PostgreSQL 中的另一个模式?