gpt4 book ai didi

sql - 使用 Group By 时计算 Access 2007 中位数的最佳方法

转载 作者:行者123 更新时间:2023-12-01 13:08:55 27 4
gpt4 key购买 nike

我有一个表格,其中包含一本书,然后是关于这本书的多个价格(这是一个高度简化的示例):

ID  BOOK    PRICE1   BOOK1   102   BOOK1   153   BOOK1   124   BOOK2   85   BOOK2   2

I am easily calculating the average, but there must be a nice way to calculate the median?

Current SQL:

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

结果:
预订平均价格
书 1 12.3333333333333
书2 5

最佳答案

Jet SQL 中没有中值,除非它是为 2007 年添加的,但这里有一个如何获得中值的想法。你会需要 ...

一些 SQL ...

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

以及用户定义函数 (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

发件人: LessThanDot Wiki

关于sql - 使用 Group By 时计算 Access 2007 中位数的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640286/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com