搜尋

首頁  >  問答  >  主體

尋找具有最多開發人員參與的視訊遊戲的方法(使用SQL查詢)

<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>
P粉768045522P粉768045522471 天前577

全部回覆(1)我來回復

  • P粉158473780

    P粉1584737802023-09-05 12:10:39

    在選擇查詢中選擇的列/聚合函數(MAX、COUNT、AVG等)將顯示為一個表格。 在你的查詢中:

    SELECT MAX(videogameid) FROM ....

    只會顯示具有最大值的視頻遊戲的id。你只選擇了具有最大值的videogameid。在查詢的第二部分中,選擇了與5個以上開發人員合作的videogameid。同樣,沒有選擇標題與外部SQL查詢連接。

    修改後的查詢:

    #
    SELECT videogameid,title
    FROM videogames WHERE videogameid IN
    (SELECT videogameid
    FROM workson
    GROUP BY videogameid
    HAVING COUNT(DISTINCT developerid)>5
    );

    此查詢顯示具有5個以上開發人員的videogameid和標題

    另一個查詢:

    #
    SELECT COUNT(developerid) AS dev_count,videogameid FROM workson GROUP BY videogameid
    ORDER BY dev_count DESC LIMIT 1;

    這顯示了具有最多開發人員的選定視訊遊戲的videogameid和開發人員數量。沒有標題

    如果我們想要看到標題:

    SELECT videogameid,title FROM videogames WHERE videogameid IN
    (SELECT videogameid FROM (SELECT COUNT(developerid) AS count,videogameid FROM workson GROUP BY videogameid
    ORDER BY COUNT(developerid) DESC LIMIT 1) AS T);

    此查詢顯示具有最多開發人員的標題和videogameid。

    #

    回覆
    0
  • 取消回覆