运行MonetDB数据库服务器工具包v1.1(2013年2月-SP6)
这个查询
select rowtype, min(zdate), max(zdate) , count(*)
from fdhista
group by rowtype
;
Run Code Online (Sandbox Code Playgroud)
返回每个行类型的正确最小和最大日期.
rowtype L1 L2 L3
3 1970-12-31 2009-07-31 1664186
1 2003-02-24 2013-09-13 11649306
Run Code Online (Sandbox Code Playgroud)
这个查询,在同一个表上
select min(zdate), max(zdate), count(*) from fdhista where rowtype=3;
Run Code Online (Sandbox Code Playgroud)
似乎"忽略"了where子句,返回
L1 L2 L3
1970-12-31 2013-09-13 13313492
Run Code Online (Sandbox Code Playgroud)
我还没有找到一个通用的sql先例(尚未).这是预期的反应吗?
我在期待这个
L1 L2 L3
1970-12-31 2009-07-31 1664186
Run Code Online (Sandbox Code Playgroud)
我在Oracle和SQL Server中尝试了类似的查询,并取回了我预期的响应.然而,我发现支持"忽略"where子句的通用sql注释.也许这是MonetDB使用特定SQL标准的情况?
同意,看起来像一个错误,但在此示例中无法重现:
create table fdhista (rowtype tinyint, zdate date);
insert into fdhista values (1,'2013-09-13'),(1,'1970-12-31'),(3,'2013-09-14'),(3,'1970-12-30'),(3,'1984-06-24');
Run Code Online (Sandbox Code Playgroud)
当我然后跑
select rowtype, min(zdate), max(zdate) , count(*) from fdhista group by rowtype;
Run Code Online (Sandbox Code Playgroud)
我明白了
+---------+------------+------------+------+
| rowtype | L1 | L2 | L3 |
+=========+============+============+======+
| 1 | 1970-12-31 | 2013-09-13 | 2 |
| 3 | 1970-12-30 | 2013-09-14 | 3 |
+---------+------------+------------+------+
Run Code Online (Sandbox Code Playgroud)
并且随着限制
select min(zdate), max(zdate), count(*) from fdhista where rowtype=3;
Run Code Online (Sandbox Code Playgroud)
我明白了
+------------+------------+------+
| L1 | L2 | L3 |
+============+============+======+
| 1970-12-30 | 2013-09-14 | 3 |
+------------+------------+------+
Run Code Online (Sandbox Code Playgroud)
一切看起来都很好,但我在这里运行最新的 MonetDB 版本。
首先,更新到最新的 MonetDB 版本 Jan2014。其次,请在 bugtracker 中报告 MonetDB 错误:http://bugs.monetdb.org/。请确保在错误报告中包含足够的信息,以便可以重现它,在这种情况下,我必须猜测架构并提供示例数据。
归档时间: |
|
查看次数: |
963 次 |
最近记录: |