MS Access - 计算

时间:2017-02-22 14:16:20

标签: database ms-access

我是经济学专业的学生,​​我在数据科学方面没有太多经验。我试图尽可能详细地描述问题,如果有不清楚的地方请告诉我:)

我的最终论文工作的数据计算存在一些问题:

问题:我想分析一个包含3列和2000万行的数据集。 3列是时间戳,用户(大约130个用户)和能耗(瓦特每秒)。

Data

在该示例中,显示了数据集。时间戳基于10-15秒的间隔,并且这些时间戳是连续的。因此,使用时间戳1458185109进行测量后,时间戳为1458185209的测量值为10-15秒。这些时间戳是匿名生成的。但是,我知道测量的确切开始和结束时间和日期。恰好有153天。

根据这些信息,我想计算每个用户每天的平均消费量。比方说,有约。数据集中user1的300.000个测量点。总测量时间为2个月。因此,用户的平均消费量可以通过从时间戳1到时间戳4918(300.000 / 61天)的平均值来计算。

我希望在给定时间内为所有用户执行此操作。

另一个问题是并非所有用户都具有相同的测量量。但是,测量结果可以在153天内平均分配。例如,对于user1,第一天有278个测量值,对于user2 313测量值。

在图像中,您可以看到用户的总测量值和总消耗量。

我试图在Access中解决这个问题,但到目前为止我还没有成功。我有任何提示或建议(最好在Access中),请告诉我:))

1 个答案:

答案 0 :(得分:1)

是否有可能并非所有用户都拥有相同数量的测量,他们没有使用电源?如果没有零消费的记录,那将很容易判断。

要帮助理解间隔以及如何转换为有意义的内容,请查看以下代码。在Access中您需要做的就是将日期/时间计算为:DateAdd(“s”,Timestamp,#1/1/1970#)

Function Date_Timestamp()

' Timestamp should be # of seconds since 1/1/1970

Dim lTimestamp  As Long
Dim dStartDate  As Date
Dim dThisDate   As Date
Dim lSecPerMin  As Long
Dim lSecPerHr   As Long
Dim lSecPerDay  As Long
Dim lSecPerYr   As Long
Dim lNbrDays    As Long

dStartDate = #1/1/1970#

lTimestamp = 1460210005
lSecPerMin = 60
lSecPerHr = 60 * lSecPerMin     ' =      3,600
lSecPerDay = 24 * lSecPerHr     ' =     86,400
lSecPerYr = 365 * lSecPerDay    ' = 31,536,000      ** Don't use this (Leap Years!!)
lNbrDays = lTimestamp / lSecPerDay

' Just show the approximate date...
dThisDate = DateAdd("d", lNbrDays, #1/1/1970#)
Debug.Print "Timestamp: " & lTimestamp & vbTab & "# Days: " & lNbrDays & vbTab & "Date: " & dThisDate

' To be more precise, show the time also...
dThisDate = DateAdd("s", lTimestamp, #1/1/1970#)
Debug.Print "Timestamp: " & lTimestamp & vbTab & "Date/Time: " & dThisDate

End Function