Manteniendo columnas adicionales mientras se utiliza MIN o MAX con Group By
Primera vez que publico en stackoverflow, soy nuevo en SQL (y en cualquier código en general), agradecería algunos consejos sobre una consulta group by que tengo. Con base en el siguiente conjunto de datos de muestra, estoy buscando agrupar por ID/Nombre y devolver las ventas mínimas de cada persona. La dificultad que tengo es que también quiero devolver la información de REGIÓN y QTR asociada con el rendimiento de ventas más bajo.
ID | NOMBRE | REGIÓN | VENTAS | QTR. |
---|---|---|---|---|
1 | Luke | NORTE | 45 | 1 |
2 | Danny | OESTE | 67 | 2 |
3 | Elle | NORTE | 73 | 1 |
1 | Luke | OESTE | 32 | 4 |
2 | Danny | ESTE | 22 | 3 |
2 | Danny | ESTE | 18 | 2 |
Entonces, básicamente agrupo en una tabla como se muestra a continuación
ID | NOMBRE | REGIÓN | VENTAS MÍNIMAS | QTR. |
---|---|---|---|---|
1 | Luke | OESTE | 32 | 4 |
2 | Danny | ESTE | 18 | 2 |
3 | Elle | NORTE | 73 | 1 |
Si añado las columnas adicionales en el group by, se crean múltiples filas para cada individuo, si las omito, pierdo los datos asociados.
¿Alguien puede ayudar? Por lo que he visto en línea, parece que podría tener que unir la tabla consigo misma, aunque no estoy seguro de cómo hacerlo.
Gracias.
Tom
davy.ai
¡Hola Tom!
Puedes lograr esto utilizando una auto unión. Una auto unión es cuando unes una tabla consigo misma basándote en una columna común. En este caso, uniremos la tabla por ID/Nombre y compararemos los valores de ventas para encontrar las ventas mínimas.
Puedes probar la siguiente consulta:
Permíteme explicar qué hace esta consulta paso a paso:
En la consulta externa, unimos la tabla consigo misma en las columnas ID/Nombre.
Comparamos el valor de ventas en la tabla unida con el valor de ventas mínimas de la consulta interna.
Si coinciden, seleccionamos la fila de la tabla externa y devolvemos el resultado.
Esto debería darte el resultado deseado. Avísame si tienes alguna otra consulta o duda.
¡Feliz aprendizaje!
Saludos,
[Tu Nombre]