如何将高级计算集成到数据库字段中?

时间:2010-03-26 13:21:18

标签: mysql database perl ms-access

我的生物学研究涉及细胞结构的测量,因为它在整个观察过程中改变长度(每分钟捕获图像几个小时)。随着我的数据集变得越来越大,我试图将它们存储在Access数据库中,我希望从中执行各种有关其大小变化的查询。

我知道SELECT语句可以包含一些数学排列,但是我无法合并许多必要的计算(可能是由于我缺乏知识)。例如,一种计算涉及确定特定定义的增长期间的变化率。这个计算完全取决于表中保存的原始数据,因此我没有这样做,在进入该字段之前在excel中计算它是合适的。

所以我的问题是,执行此计算的最合适方法是什么。 我应该尝试在我的QUERY中将一个巨大的SELECT计算字符串串起来,还是有办法使用另一种语言(我知道perl?),可以调用它来填充新的查询字段?

我不是在寻找编写代码的人,只是将每个步骤合并到一起。此外,我目前正在使用Office Access,但我会对任何mySQL答案感兴趣,因为我可能会在以后转移到此平台。谢谢大家!

5 个答案:

答案 0 :(得分:2)

您可以将逻辑和数学封装到VBA中的自定义函数中,然后在select语句中调用它。这种方法也适用于其他数据库引擎,但确切的措辞可能略有不同

答案 1 :(得分:1)

在SQL中执行它会快得多,但调试起来要困难得多(我猜你正在研究像ANOVA,t-tests,chi ^ 2等)。

话虽如此,您可能希望存储和计算临时值,例如自上次测量后的延迟以及测量值的变化。

OTOH,您描述的指标在SQL中非常简单:

  

一项计算涉及确定特定增长期间的变化率

下进行。

答案 2 :(得分:0)

如果需要使用复杂计算的结果填充字段,则可以更容易地使用完整的编程语言(如Perl)进行计算,而不是尝试在SQL中进行计算。

Perl有一个非常好的数据库API,“DBI”,几乎所有人都知道的数据库引擎的驱动程序。这是关于DBI的一篇很好的短文:

http://www.perl.com/pub/a/1999/10/DBI.html

答案 3 :(得分:0)

对于计算选项,精度等,您将受SQL实现的支配。更好地使用单独的语言,您可以在其中控制,扩展和灵活地存储您想要和需要的结果。

答案 4 :(得分:0)

我建议您使用Access作为输入,编辑和打印数据的前端工具。您可以将数据存储在任何后端数据库引擎(MySQL,SQL Server等)中,尽管Jet / ACE(默认的Access数据库引擎)可能完全足够,除非您的数据集非常非常大(它是限制为2GB,但如果您的数据在常规使用期间增长到1GB以上,则您真的不想继续使用它。)

但是,对于复杂的统计分析,我建议考虑导出数据并使用适当的统计数据包进行分析。这意味着您的报告可能都是从那里完成的。

在这种情况下,您可以利用Access的功能,允许您创建一个界面,用于选择要导出以进行分析的数据集。我最后一次为客户做了这个,他们使用SPSS进行数据分析,我建立了一个非常灵活的导出界面(他们可以选择他们喜欢的任何变量进行分析)。

这是否是一个有用的替代方案取决于您将要进行的分析的范围和类型。如果您正在使用Access VBA缺少的许多功能,并且必须从Excel中借用它们或为它们编写替换,那么您可能最好在其他程序中完成所有这些功能。

此外,您的某些或部分或全部计算可能属于表示层而不是SQL。访问报告在这里有很多功能,如果您要汇总数据,最好在该级别完成,而不是在报告底层的SQL记录源中完成。