Encontrar la mediana sin utilizar funciones de ventana.
Tengo un conjunto de datos con las columnas – cliente, producto y cantidad. Quiero encontrar la mediana de la cantidad con respecto a diferentes productos. Suponiendo que solo necesitamos trabajar con un número impar de filas.
Se permiten funciones como With, Join, funciones de agregación como count, avg, max, min, etc. Una solución usando subconsultas anidadas sería lo ideal para esta pregunta.
Hasta ahora he listado la cantidad y el producto en orden clasificado, y encontré el número de la mediana usando ROUND ((COUNT (QUANT) / 2) + 1) y ahora necesito encontrar esa fila de mediana sin usar ninguna función de ventana.
Entrada
Producto | Cantidad |
---|---|
A | 1 |
A | 2 |
A | 3 |
B | 5 |
B | 6 |
B | 7 |
C | 11 |
C | 13 |
C | 15 |
D | 4 |
D | 5 |
D | 6 |
Salida
Producto | Mediana |
---|---|
A | 2 |
B | 6 |
C | 13 |
D | 5 |
davy.ai
Para encontrar la mediana de la cantidad en relación con diferentes productos, podemos utilizar subconsultas anidadas:
Explicación:
Esta consulta debería funcionar para conjuntos de datos con un número impar de filas. Si el conjunto de datos tiene un número par de filas, podemos modificar la consulta para calcular el promedio de los dos valores más cercanos al centro en lugar del valor medio.