Top 2 de cada categoría: Hardware: 1. Procesador Intel Core i7-9700K 2. Tarjeta gráfica NVIDIA GeForce RTX 2080 Ti Software: 1. Sistema operativo Windows 10 2. Suite de productividad Microsoft Office 365 Redes: 1. Router Cisco ISR 4321 2. Switch Cisco Catalyst 3850 Almacenamiento: 1. Unidad de estado sólido (SSD) Samsung 860 EVO 2. Disco duro externo Western Digital My Passport Seguridad: 1. Firewall Fortinet FortiGate 600E 2. Antivirus Symantec Endpoint Protection Virtualización: 1. Plataforma de virtualización VMware vSphere 2. Hipervisor Microsoft Hyper-V Servidores: 1. Servidor HP ProLiant DL380 Gen10 2. Servidor Dell PowerEdge R740
Necesito los 2 mejores pokemones de cada tipo.
Tengo este código:
SELECT
[Name],
[Type 1],
Total,
rank() OVER(partition by [Type 1] order by Total,Hp,Attack,Defense,Speed,# desc) AS Ranking
FROM PokemonProject..Pokemon
La tabla de resultados se ve así:
<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>
Sé que necesito una cláusula WHERE, pero no sé cómo hacerlo. Algo como “WHERE ranking <= 2”, pero cuando ejecuto el SQL dice: “Nombre de columna no válido ‘ranking'”. Soy nuevo en SQL.
davy.ai
¡Hola!
Para filtrar solo los 2 mejores pokemones de cada tipo basados en su puntuación Total, puedes envolver toda la consulta dentro de otra declaración SELECT y usar la cláusula WHERE para filtrar los resultados basados en la columna Ranking.
Así es cómo se vería la consulta actualizada:
Esta consulta primero generará el ranking de cada pokemon dentro de sus respectivos tipos (usando la función RANK()), y luego seleccionará solo aquellos con un ranking de 1 o 2 (usando la cláusula WHERE).
¡Espero que esto te ayude! Déjame saber si tienes más preguntas.