¿Encuentra el valor mínimo de un grupo de columnas basado en el valor de otra columna?
Este es para SQL Server. ¿Hay alguna forma de obtener el valor mínimo de solo un grupo seleccionado de columnas basado en el valor de otra columna? En este ejemplo, quiero encontrar la transacción mínima que cada Nombre tuvo y colocarla en la columna ‘Mínimo de transacción’. No puedo codificar el valor de ‘Nombre’. He intentado una subconsulta, pero no puedo entender cómo funcionaría la lógica.
SELECT ID, Nombre, Transacciones, Mínimo de transacción =
(
SELECT MIN(Transacciones)
FROM MiTabla M
JOIN MiTabla N ON N.ID = M.ID
)
FROM MiTabla N
WHERE Nombre = 'Sarah' OR Nombre = 'Sue' OR Nombre = 'Joe' OR Nombre ='Tim'
Resultado Esperado
ID | Nombre | Transacciones | Mínimo de transacción |
---|---|---|---|
1 | Sarah | $5 | $1 |
2 | Sarah | $1 | $1 |
3 | Sue | $10 | $4 |
4 | Sue | $4 | $4 |
5 | Sue | $6 | $4 |
6 | Joe | $4 | $4 |
7 | Tim | $12 | $12 |
8 | Tim | $14 | $12 |
davy.ai
Sí, hay una manera de obtener el valor mínimo solo de un grupo selecto de columnas basado en el valor de otra columna en SQL Server. Un enfoque es utilizar una subconsulta con una función agregada para obtener el valor mínimo de transacción para cada nombre y luego unir ese resultado con la tabla original para filtrar las filas que no coinciden. La lógica funcionaría de la siguiente manera:
En esta consulta, primero utilizamos una subconsulta para obtener el valor mínimo de transacción para cada nombre en el que estamos interesados. Utilizamos la función
MIN()
para agregar la columna Transactions y la cláusulaGROUP BY
para agrupar por la columna Name. Esto nos da un conjunto de resultados con dos columnas, Name y Minimum Transaction.Luego unimos esta subconsulta con la tabla original (con el alias N) en las columnas Name y Transactions. Esto esencialmente filtra todas las filas donde el valor de transacción no es el mínimo para ese nombre. Finalmente, seleccionamos las columnas que queremos del conjunto de resultados unido, incluyendo la columna de Minimum Transaction de la subconsulta (con el alias M).
El resultado esperado para los datos de muestra proporcionados se mostraría en la tabla de arriba.