Aquí podría ser tu PUBLICIDAD


La mejor forma de calcular una mediana en Access 2007 cuando usa Group By

votos
3

Tengo una tabla que contiene un libro y luego precios múltiples sobre el libro (esta es una muestra muy simplificada):

ID PRECIO DE LIBRO
1 LIBRO1 10
2 LIBRO1 15
3 LIBRO1 12
4 LIBRO2 8
5 LIBRO2 2

Estoy calculando el promedio fácilmente, pero debe haber una buena forma de calcular la mediana.

SQL actual:

SELECT DISTINCTROW Books.BOOK, Avg(Books.PRICE) AS [Avg Of PRICE]
FROM Books
GROUP BY Books.BOOK;

Resultados:

RESERVAR Promedio de precio
BOOK1 12.3333333333333
BOOK2 5

Publicado el 12/03/2009 a las 21:14
fuente por usuario NoahD
En otros idiomas...        العربية       

3 respuestas

votos
3

No hay Median en Jet SQL, a menos que se haya agregado para 2007, pero aquí hay una idea de cómo obtener uno. Necesitará ...

Algunos SQL ...

SELECT Statistics.Month, Sum(([SentTo])) AS [Sum Sent], fMedian("Statistics","Month",[Month],"SentTo") AS [Median Sent]
FROM Statistics
GROUP BY Statistics.Month;

Y una función definida por el usuario (UDF).

Function fMedian(SQLOrTable, GroupFieldName, GroupFieldValue, MedianFieldName)
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs1 = db.OpenRecordset(SQLOrTable, dbOpenDynaset)

If IsDate(GroupFieldValue) Then
    GroupFieldValue = "#" & GroupFieldValue & "#"
ElseIf Not IsNumeric(GroupFieldValue) Then
    GroupFieldValue = "'" & Replace(GroupFieldValue, "'", "''") & "'"
End If

rs1.Filter = GroupFieldName & "=" & GroupFieldValue
rs1.Sort = MedianFieldName

Set rs = rs1.OpenRecordset()
rs.Move (rs.RecordCount / 2)

If rs.RecordCount Mod 2 = 0 Then
    varMedian1 = rs.Fields(MedianFieldName)
    rs.MoveNext
    fMedian = (varMedian1 + rs.Fields(MedianFieldName)) / 2
Else
    fMedian = rs.Fields(MedianFieldName)
End If

End Function

De: LessThanDot Wiki

Respondida el 12/03/2009 a las 09:28
fuente por usuario Fionnuala


Aquí podría ser tu PUBLICIDAD


votos
0

La mediana puede ser calculada en MS Access mediante consultas regulares y sin apenas VBA. La mediana es el percentil 50. Por lo tanto, crear consultas de selección normalmente; y luego ir a la vista de SQL e incluyen "50 por ciento superior" después de selección de palabras clave. Ordenar ascendente para la parte inferior 50 por ciento; en orden descendente por encima del 50 por ciento. A continuación, busque máximo de conjunto de resultados por ciento inferior y superior mínima de conjunto de resultados por ciento. El promedio de estos dos es la mediana. Cuando se utiliza "Top 50 por ciento", haga criterios seguros en la consulta es específico para ese conjunto de resultados a partir del cual se calculará la mediana.

Respondida el 04/03/2010 a las 02:11
fuente por usuario Alan

votos
0

No hay una función integrada, por lo que debe usar el código para recorrer los registros y calcular la mediana usted mismo.

Usa google : hay muchas muestras de código por ahí

Respondida el 12/03/2009 a las 09:22
fuente por usuario DJ.