寻找具有最多开发人员参与的视频游戏的方法(使用SQL查询)
P粉768045522
2023-09-04 16:18:24
<p>假设我们有3个表,分别是videogames、developers和workson。</p>
<p>在videogames表中,我们有以下属性:</p>
<ul>
<li>videogameid(主键)</li>
<li>标题</li>
<li>年份</li>
<li>genre</li>
</ul>
<p>然后在developers表中,我们有:</p>
<ul>
<li>developerid(主键)</li>
<li>姓名</li>
<li>gender</li>
</ul>
<p>然后在workson表中,我们有:</p>
<ul>
<li>videogameid(主键和外键)</li>
<li>developerid(主键和外键)</li>
</ul>
<p>我的代码尝试:</p>
<pre class="brush:php;toolbar:false;">SELECT MAX(videogameid)
FROM
(SELECT videogameid
FROM workson
GROUP BY videogameid
HAVING COUNT(DISTINCT developerid)>5
)videogames_with_most_developers;</pre>
<p>然而,我未能检索到带有标题的答案(主要是因为我没有选择标题),但这是因为我似乎无法建立连接。</p>
<p>编辑:我们有一些示例数据,videogames表中有:</p>
<p>插入视频游戏(videogameid、标题、年份、类型)</p><p>
VALUES (111,'魔兽世界',2004,'MMORPG');
插入视频游戏(视频游戏 ID、标题、年份、类型)
VALUES (112,'星际争霸2',2008,'RTS');</p>
<p>developers表中有:</p>
<p>插入开发人员(开发人员 ID、性别、姓名)
值(98734,'M','约翰逊');
插入开发人员(开发人员 ID、性别、姓名)
值(98735,“F”,“里贾纳”);
插入开发人员(开发人员 ID、性别、姓名)
值(98736,“M”,“拉马尔”);</p>
<p>workson表中有:</p>
<p>插入workson(videogameid,developerid)
值 (111, 98734);
插入workson(videogameid,developerid)
价值观 (111, 98735);
插入workson(videogameid,developerid)
值 (112, 98736);</p>
<p>预期输出应该是标题为'魔兽世界',因为它有最多的导演在此项目上工作,数量为2,而标题为'Starcraft 2'的项目在此示例数据中没有最多的开发人员。</p>
在选择查询中选择的列/聚合函数(MAX、COUNT、AVG等)将显示为一个表格。 在你的查询中:
只会显示具有最大值的视频游戏的id。你只选择了具有最大值的videogameid。在查询的第二部分中,选择了与5个以上开发人员合作的videogameid。同样,没有选择标题与外部SQL查询连接。
修改后的查询:
此查询显示具有5个以上开发人员的videogameid和标题
另一个查询:
这显示了具有最多开发人员的选定视频游戏的videogameid和开发人员数量。没有标题。
如果我们想要看到标题:
此查询显示具有最多开发人员的标题和videogameid。