Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You can try a self join like this <a href="http://sqlfiddle.com/#!2/27977e/9" rel="nofollow">fiddle</a>:</p> <p>Just to expand on some other ways you can use this, I've updated the original fiddle to <a href="http://sqlfiddle.com/#!2/be68a/3" rel="nofollow">this</a>. Also, I added an extra datapoint for user 4 to show what happened with duplicates.</p> <ul> <li>To get the data for one user (original query):</li> </ul> <pre class="lang-sql prettyprint-override"><code>SELECT c1.* FROM completedscenarios c1 LEFT JOIN completedscenarios c2 ON c1.user_id = c2.user_id AND c1.game = c2.game AND c1.CompletePercentage &lt; c2.completePercentage WHERE c1.user_id = 1 and c2.user_id is null; </code></pre> <ul> <li>To get all users and their best scores per game</li> </ul> <pre class="lang-sql prettyprint-override"><code>SELECT c1.user_id, c1.game, c1.CompletePercentage FROM completedscenarios c1 LEFT JOIN completedscenarios c2 ON c1.user_id = c2.user_id AND c1.game = c2.game AND c1.CompletePercentage &lt; c2.completePercentage WHERE c2.user_id is null ORDER BY c1.user_id, c1.CompletePercentage; </code></pre> <ul> <li>To get all games and the highest percentages no matter what user</li> </ul> <pre class="lang-sql prettyprint-override"><code>SELECT c1.game, c1.user_id, c1.CompletePercentage FROM completedscenarios c1 LEFT JOIN completedscenarios c2 ON c1.game = c2.game AND c1.CompletePercentage &lt; c2.completePercentage WHERE c2.game is null ORDER BY c1.game, c1.CompletePercentage; </code></pre> <ul> <li>To get users and their best overall game</li> </ul> <pre class="lang-sql prettyprint-override"><code>SELECT c1.user_id, c1.game, c1.CompletePercentage FROM completedscenarios c1 LEFT JOIN completedscenarios c2 ON c1.user_id = c2.user_id AND c1.CompletePercentage &lt; c2.completePercentage WHERE c2.user_id is null ORDER BY c1.user_id, c1.CompletePercentage; </code></pre> <ul> <li>And here is a copy of the results </li> </ul> <pre class="lang-sql prettyprint-override"><code>USER_ID | GAME | COMPLETEPERCENTAGE ------------------------------------ 1 | name1 | 90 1 | name4 | 80 1 | name3 | 70 </code></pre> <pre><code>USER_ID | GAME | COMPLETEPERCENTAGE ------------------------------------ 1 | name3 | 70 1 | name4 | 80 1 | name1 | 90 2 | name2 | 70 3 | name4 | 100 4 | name1 | 50 4 | name2 | 70 </code></pre> <pre><code>GAME | USER_ID | COMPLETEPERCENTAGE ------------------------------------ name1 | 1 | 90 name2 | 2 | 70 name2 | 4 | 70 name3 | 1 | 70 name4 | 3 | 100 </code></pre> <pre><code>USER_ID | GAME | COMPLETEPERCENTAGE ------------------------------------ 1 | name1 | 90 2 | name2 | 70 3 | name4 | 100 4 | name2 | 70 </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload