【发布时间】:2009-06-15 19:13:56
【问题描述】:
我刚刚为我的应用程序收到了一个新的数据源,它仅在数据发生更改时才将数据插入Derby 数据库。通常,缺少数据很好 - 我正在用数据(随时间变化的值)绘制折线图,我只是在两点之间画一条线,在任何给定点推断预期值。问题是,在这种情况下,缺少数据意味着“画一条直线”,如果我这样做,图表就会不正确。
有两种方法可以解决这个问题:我可以创建一个以不同方式处理丢失数据的新类(由于 prefuse、我正在使用的绘图库处理绘图的方式,这可能很困难),或者我可以复制行,保持 y 值相同,同时更改每行中的 x 值。我可以在连接数据库和渲染器的 Java 中执行此操作,或者我可以修改 SQL。
我的问题是,给定如下结果集:
+-------+---------------------+
| value | received |
+-------+---------------------+
| 7 | 2000-01-01 08:00:00 |
| 10 | 2000-01-01 08:00:05 |
| 11 | 2000-01-01 08:00:07 |
| 2 | 2000-01-01 08:00:13 |
| 4 | 2000-01-01 08:00:16 |
+-------+---------------------+
假设我在 8:00:20 查询它,如何使用 SQL 使它看起来像下面这样?基本上,我每秒都在复制该行,直到它已经被占用。从所有意图和目的来看,received 都是唯一的(它不是,但它是由于查询中的 WHERE 子句造成的)。
+-------+---------------------+
| value | received |
+-------+---------------------+
| 7 | 2000-01-01 08:00:00 |
| 7 | 2000-01-01 08:00:01 |
| 7 | 2000-01-01 08:00:02 |
| 7 | 2000-01-01 08:00:03 |
| 7 | 2000-01-01 08:00:04 |
| 10 | 2000-01-01 08:00:05 |
| 10 | 2000-01-01 08:00:06 |
| 11 | 2000-01-01 08:00:07 |
| 11 | 2000-01-01 08:00:08 |
| 11 | 2000-01-01 08:00:09 |
| 11 | 2000-01-01 08:00:10 |
| 11 | 2000-01-01 08:00:11 |
| 11 | 2000-01-01 08:00:12 |
| 2 | 2000-01-01 08:00:13 |
| 2 | 2000-01-01 08:00:14 |
| 2 | 2000-01-01 08:00:15 |
| 4 | 2000-01-01 08:00:16 |
| 4 | 2000-01-01 08:00:17 |
| 4 | 2000-01-01 08:00:18 |
| 4 | 2000-01-01 08:00:19 |
| 4 | 2000-01-01 08:00:20 |
+-------+---------------------+
感谢您的帮助。
【问题讨论】:
-
我实际上正在使用 Apache 的 Derby。我已将信息添加到问题中。