我需要每種型別的前 2 個神奇寶貝。我有這個代碼:
SELECT
[Name],
[Type 1],
Total,
rank() OVER(partition by [Type 1] order by Total,Hp,Attack,Defense,Speed,# desc) AS Ranking
FROM PokemonProject..Pokemon
結果表是這樣的:
<table>
<thead>
<tr>
<th>Name </th>
<th>Type 1</th>
<th>Total </th>
<th>Ranking</th>
</tr>
</thead>
<tbody>
<tr>
<td>Xerneas</td>
<td>Fairy</td>
<td>680</td>
<td>1</td>
</tr>
<tr>
<td>Florges</td>
<td>Fairy</td>
<td>552</td>
<td>2</td>
</tr>
<tr>
<td>Ho-oh </td>
<td>Fire</td>
<td>680</td>
<td>1</td>
</tr>
<tr>
<td>CharizardMega Charizard X </td>
<td>Fire</td>
<td>634</td>
<td>2</td>
</tr>
<tr>
<td>CharizardMega Charizard Y </td>
<td>Fire</td>
<td>634</td>
<td>3</td>
</tr>
</tbody>
</table>
我知道我需要一個 WHERE 子句,但我不知道該怎么做。類似于“排名 <= 2”之類的東西,但是當我運行 SQL 時,它說:“無效的列名'排名'”我是 SQL 新手。
uj5u.com熱心網友回復:
鑒于您的查詢回傳您期望的結果,以下是您可以應用 where 子句的一種方法:
WITH cte AS
(
SELECT
[Name],
[Type 1],
Total,
rank() OVER(partition by [Type 1] order by Total,Hp,Attack,Defense,Speed,# desc) AS Ranking
FROM PokemonProject..Pokemon
)
WHERE Ranking <= 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/385373.html
下一篇:在GROUPBY查詢中回傳空值
