不幸的是,我的SQL技能非常基础。我希望有一个人可以帮助我。我想计算几个dBµV值的对数平均值。不幸的是,我不能使用标准的平均值函数,因为结果不正确。
今天,我在Excel中拥有数据,并且我的计算工作正常。不幸的是,Excel现在已经达到其性能极限,因此我已经将数据导入了MS Access(我使用的是MS Access Ver Office 365)。
我有一张带有ID,频率和dBµV值的表。我想获得特定ID的特定频率范围内所有dBµV样本的对数平均值。频率开始于122,最高可以达到1802。并非每个ID都具有所有频率的值。
频率范围可以如下,并且从不改变(意味着频率范围的开始和结束是恒定的):
在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] 删除。
我来说两句