Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

04 Haga lo que hicimos: aprendiendo sobre group by de SQL

SELECT p.categoria, c.pais, COUNT() AS total_productos FROM productos p JOIN categorias c ON p.id_categoria = c.id WHERE p.precio > 100 GROUP BY p.categoria, c.pais HAVING COUNT() > 5 ORDER BY total_productos DESC;

¡Buenísima consulta, Oscar!  Vamos a desmenuzarla paso a paso para que el GROUP BY (y todo lo demás) te quede clarísimo:

 ¿Qué hace tu consulta?
Estás buscando agrupaciones de productos por categoría y país donde:
- El precio sea mayor a 100, y
- La cantidad de productos en ese grupo sea mayor a 5.

 Desglose por partes
SELECT  
  p.categoria,  
  c.pais,  
  COUNT(*) AS total_productos


- Selecciona la categoría del producto, el país de la categoría, y cuenta cuántos productos hay en ese grupo.
FROM  
  productos p
JOIN  
  categorias c ON p.id_categoria = c.id


- Une las tablas productos y categorias para tener acceso a la columna pais.
WHERE  
  p.precio > 100


- Filtra los productos cuyo precio sea mayor a 100 antes de agrupar.
GROUP BY  
  p.categoria,  
  c.pais


- Aquí se agrupa por la combinación de categoría de producto y país. Cada grupo representa un conjunto único como “Electrónica–México” o “Hogar–España”.
HAVING  
  COUNT(*) > 5


- Aplica un filtro después de agrupar: solo se consideran los grupos que tienen más de 5 productos.
ORDER BY  
  total_productos DESC;


- Ordena los resultados del grupo que tiene más productos al que tiene menos.

 ¿Por qué GROUP BY importa aquí?
La cláusula GROUP BY es esencial porque:
- Estás contando productos, pero necesitas hacerlo por grupo.
- Agrupar por p.categoria y c.pais te permite obtener estadísticas por segmento.

Si quieres, te puedo ayudar a modificarla para incluir más métricas como precios promedio o categorías más vendidas. ¿Te gustaría hacerla más robusta o visualizarla en algún formato más claro?