我有3张桌子。 1是包含启动ID和名称的初创公司,1是包含投资者ID和投资者组名称的investor_groups,1是包含startup_id的交易 - 提交资金申请的初创公司的ID,以及投资者组_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
但这给了我结果 -
startup_name,num
HJ Inc,3
冰沙,3
我想要的是 -
startup_name,investor_name
HJ Inc,abc
HJ Inc,def
HJ Inc,记录
冰沙,xyz
冰沙,rst
冰沙,lmn
当我在SELECT语句中添加Investor组名时,它向我显示一个错误,即Investor组名称需要在GROUP BY语句中。
来自表格的样本数据 -
对于表'初创公司'startups
对于表'investor_groups'investor_groups
对于表'交易'deals
你可以尝试使用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