MS Access SQL计算dBµV的对数平均值

丸沼

不幸的是,我的SQL技能非常基础。我希望有一个人可以帮助我。我想计算几个dBµV值的对数平均值。不幸的是,我不能使用标准的平均值函数,因为结果不正确。

今天,我在Excel中拥有数据,并且我的计算工作正常。不幸的是,Excel现在已经达到其性能极限,因此我已经将数据导入了MS Access(我使用的是MS Access Ver Office 365)。

我有一张带有ID,频率和dBµV值的表。我想获得特定ID的特定频率范围内所有dBµV样本的对数平均值。频率开始于122,最高可以达到1802。并非每个ID都具有所有频率的值。

频率范围可以如下,并且从不改变(意味着频率范围的开始和结束是恒定的):

  • 122至170
  • 178至226
  • 234至530
  • 等等

在Excel中,我对频率范围F122_170使用了以下公式(B1:H1包含dBµV值):

{=10*LOG(SUM(10^(B1:H1/10))/COUNTA(B1:H1))}

现在我完全迷失了SQL语句,无法获得理想的结果。

下面是我的表“ tblDev”的示例。

ID 频率 声压
3977739907 122 32.44
3977739907 130 32.24
3977739907 138 31.93
3977739907 146 30.79
3977739907 154 31.31
3977739907 162 32.39
3977739907 170 32.43
3977739907 178 32.81
3977739907 186 32.21
3977739907 194 31.23

我想要的输出如下:

ID F122_170 F178_226 F234_530 F770_up
3977739907 31.97 31.23 37.03 0.00
3845056609 32.24 23.40 41.09 38.18
3882949203 23.10 16.98 31.03 32.26
... ... ... ... ...

如果有人可以帮助我处理SQL语句,那就太好了。

最好的问候帕特里克

古斯塔夫

首先,您需要一个Log10函数:

Public Function Log10( _
    ByVal Value As Double) _
    As Double

' Returns Log 10 of Value.
' 2015-08-17. Gustav Brock, Cactus Data ApS, CPH.

    Const Base10    As Double = 10

    ' No error handling as this should be handled
    ' outside this function.
    '
    ' Example:
    '
    '     If MyValue > 0 then
    '         LogMyValue = Log10(MyValue)
    '     Else
    '         ' Do something else ...
    '     End If
    
    Log10 = Log(Value) / Log(Base10)

End Function

然后,您可以运行以下查询:

Select 
    ID, 
    Sum(AF122_170) As F122_170,
    Sum(AF178_226) As F178_226,
    Sum(AF234_530) As F234_530,
    Sum(AF770_up) As F770_up
From

    (Select 
        tblDev.ID, 
        IIf(freq Between 122 And 170, Log10(Avg(10 ^ (tblDev.dBuV / 10))) * 10, 0) As AF122_170,
        IIf(freq Between 178 And 226, Log10(Avg(10 ^ (tblDev.dBuV / 10))) * 10, 0) As AF178_226,
        IIf(freq Between 234 And 530, Log10(Avg(10 ^ (tblDev.dBuV / 10))) * 10, 0) As AF234_530,
        IIf(freq >= 770, Log10(Avg(10 ^ (tblDev.dBuV / 10))) * 10, 0) As AF770_up    From 
        tblDev
    Group By 
        ID,
        freq Between 122 And 170,
        freq Between 178 And 226,
        freq Between 234 And 530,
        freq >= 770) As T

Group By ID

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MS Access SQL插入查询

来自分类Dev

为什么MS Access DB无法更新?

来自分类Dev

MS ACCESS SQL查询计数不同

来自分类Dev

MS Access登录上的SQL注入

来自分类Dev

MS Access SQL查询IP地址范围

来自分类Dev

仅计算MS Access中的连续日期

来自分类Dev

使用MS Access插入SQL Server

来自分类Dev

将MS Access SQL转换为Oracle?

来自分类Dev

MS SQL查询每天的最小/最大/平均值

来自分类Dev

MS Access SQL顺序更新

来自分类Dev

取消嵌套的MS Access SQL查询嵌套

来自分类Dev

从MS Access执行SQL Server存储过程

来自分类Dev

参数太少错误MS Access SQL

来自分类Dev

参数错误MS Access SQL

来自分类Dev

MS Access SQL错误

来自分类Dev

MS ACCESS SQL连接语法

来自分类Dev

将SQl查询转换为MS Access

来自分类Dev

MS Access SQL计算从多行

来自分类Dev

如何从MS Access / SQL中的第一条记录开始获取一列中每三个记录的平均值?

来自分类Dev

使用UCanAccess的MS Access '97 DB的CharSet

来自分类Dev

MS Access DB蔚蓝

来自分类Dev

提高查询性能,计算MS-Access中大型数据集的7天滚动平均值

来自分类Dev

导出MS Access 2010 SQL

来自分类Dev

MS Access转换语句计算字段

来自分类Dev

MS Access SQL平均值函数(带小数位)

来自分类Dev

来自Access MS DB的表查询

来自分类Dev

如何计算两列的平均值?微软Access

来自分类Dev

SQL MS Access 2013年

来自分类Dev

MS Access平均或总和