我对数据库和LibreOffice Base / HSQLDB相对较新。我安装了最新的Base。 我的自行车数据库有1个表“BikeDate”,有4个字段如下:
| RideID | RideDate | Bike | Miles |
1 10/2/97 Y22 15.6
....... with say 620 entries
我想要获得的是对过去17年里每月游乐设施的比较。我的指标将是所有年份每个月的所有游乐设施的总和,然后是所有年份中每个月的平均行程,然后是2014年每个月的里程数和2014年每个月的平均行程数
这是我到目前为止所做的:
SELECT MONTH( "RideDate" ) AS "MONTH", SUM( "Miles" ) AS "SUM of Miles", AVG( "Miles" ) AS "AVG of Miles",
( SELECT SUM( "Miles" ) FROM "BikeDate" WHERE ( YEAR( "RideDate" ) = '2014' ) ORDER BY MONTH( "RideDate" ) ) AS "Sum 2014",
( SELECT AVG( "Miles" ) FROM "BikeDate" WHERE ( YEAR( "RideDate" ) = '2014' ) ORDER BY MONTH( "RideDate" ) ) AS "Avg 2014"
FROM "BikeDate" AS "BikeDate"
GROUP BY MONTH( "RideDate" )
ORDER BY MONTH( "RideDate" ) ASC
输出:
|MONTH | Sum of Miles | AVG of Miles | Sum 2014 | AVG 2014 |
2 | 12.2 | 6.1 | 29 | 14.5 |
3 | 217.9 | 10.38 | 29 | 14.5 |
4 | 744.3 | 12.2 | 29 | 14.5 |
5 | 1316.3 | 17.55 | 29 | 14.5 |
....
12 | 70.2 | 11.7 | 29 | 14.5 |
第一:可以这样做吗?第2个月的2014年专栏都应该为零(我们有48英寸的降雪量,目前的总数为338英寸)。我怎样才能让它发挥作用?我想留在LO Base,因为它是免费的,目前已安装。
谢谢,戴夫。
答案 0 :(得分:1)
使用与LO Base捆绑在一起的HSQLDB 1.8数据库看起来很难实现。您可以将最新的HSQLDB 2.3.x用作LO的外部数据库。此版本允许您使用下面的表达式来表示当前年份:
AVG ("Miles") FILTER (WHERE YEAR("RideDate") = 2014)
您可以在主选择中使用此和SUM的类似表达式以及SUM和AVG表达式。不需要使用额外的子选择查询。
检查"拆分数据库"的http://www.oooforum.org和其他资源。使用最新的HSQLDB和LO的解决方案。