[英]variables in SQL for monetdb
我很困惑在MonetDB中是否可以使用标志符变量。 它是标准SQL还是仅mySQL? (见例如这个答案在这里SO)MonetDB声称支持SQL:2003(全功能列表在这里 ,我很难解析),但是这是他们在说什么变数。
在MonetDB中,以下行因抱怨意外符号而失败:
但是有办法进行这项工作吗? 我看不到将SET
(在DECLARE
之后)与SELECT
。
SELECT @firstq := QUANTILE(share26_2007,0.25) FROM sys.share26_2007;
(然后,以下是预期的用例:)
SELECT peorglopnr, CASE WHEN share26_2007 < @firstq THEN 1
正如注释中已经指出的那样, @
变量不是标准的SQL。
使用DECLARE
和SET
将起作用:
DECLARE firstq double;
SET firstq = ( SELECT quantile(share26_2007, 0.25) FROM share26_2007 );
SELECT peorglopnr, CASE WHEN share26_2007 < firstq THEN 1 .....
笔记:
share26_2007
,该表具有一列share26_2007
。 我遵循这个假设。 firstq
声明为double
。 您的示例未指定列share26_2007
的类型。 相应地更改变量类型。 quantile
在MonetDB中似乎无法正常工作(请参阅https://www.monetdb.org/bugzilla/show_bug.cgi?id=4076 ),但这与您的问题无关。 上面的语法有效(您可能要通过用sys.quantile
替换quantile
来验证这sys.quantile
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.