喂: 我使用Shell和Python对数据库进行了一些文本处理。对于互操作性,我想用SQL来做。 SQL适用于某些查询任务。但我不确定SQL是否可以处理我的所有任务。考虑一个示例数据库:
item | time | value -----+------+------- 1 | 134 | 3 2 | 304 | 1 3 | 366 | 2 4 | 388 | 2 5 | 799 | 6 6 | 111 | 7
我需要在某个#time间隔内分析#values的总和。假设时间间隔 100 ,结果应为:
time_interval | sumvalue --------------+---------- 1 | 10 -- the time interval from 100 to 199 3 | 5 -- the time interval from 300 to 399 7 | 6 -- the time interval from 700 to 799
我无法从SQL教科书中找到更好的方法,而不是使用shell和python。
所以我的朋友们,有什么建议吗?
谢谢!
答案 0 :(得分:7)
您应该可以使用非常简单的查询在mysql中执行此操作:
SELECT time DIV 100, SUM(value) FROM yourtable
GROUP BY time DIV 100
查询利用了以下事实:整数除以100将为您提供您所描述的区间分组(例如111 DIV 100 = 1
和134 DIV 100 = 1
)
答案 1 :(得分:2)
我不清楚问题。
有一个数据库,你想从那里处理数据,你是否要求使用或不使用SQL?答:是的,SQL是许多数据库的接口,对于有微小变化的主要数据库来说,它是非常标准的。使用它。
如果您不能决定使用或不使用数据库来存储和处理某些值,那么数据类型,数据量和数据关系很重要。如果您想处理大量数据并且数据集之间存在关系,那么您可能希望使用关系数据库系统,例如MySql。你告诉的问题是RMDBS的一个非常简单的问题。让我举个例子:
从项目中选择总和(值) 时间> = 100且时间< = 200
但如果数据集很小,您可以使用文件I / O轻松处理它。
如果您能提供更清晰的详细信息,我们可以提供更多帮助。
答案 2 :(得分:1)
是的,像MySQL这样的基于SQL的数据库可能是您项目的不错选择。如果您不想设置服务器,您可能还想查看SQLite。
关于SQL的好的介绍性文本对您有所帮助。我建议Allen Taylor使用 SQL For Dummies 。