我有3张桌子。 1是包含启动ID和名称的创业公司,1是包含投资者ID和投资人组名称的Investor_groups,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 Inc,3
圆滑的人,3
我想要的是-
启动名称,投资者名称
HJ Inc,abc
HJ Inc,def
HJ Inc,ghi
圆滑的人,xyz
圆滑的人,第一个
冰沙,lmn
当我在SELECT语句中添加投资者组名称时,它向我显示了一个错误,即投资者组名称必须位于GROUP BY语句中。
表中的示例数据-
对于表“启动” startups
对于表“ investor_groups” investor_groups
对于表“交易” deals
答案 0 :(得分:0)
您可以尝试使用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